javascript02

工厂函数创建对象new Object():

        function createPerson(name,age,sex){

        var person = new Object();

        person.name = name;

        person.age = age;

        person.sex = sex;

        person.sayHi = function(){

            console.log("helllo");

        };

        return person;

        }

        var p1 =createPerson("zs",18,true);

        var p2 =createPerson("ls",19,false);

        console.log(p1);

        console.log(p2);

 {name: "zs", age: 18, sex: true, sayHi: ƒ}

 {name: "ls", age: 19, sex: false, sayHi: ƒ}

自定义构造函数创建对象(this替代):

function Person(name,age,sex){

            // 函数名首字母大写

            // 不需要使用new

            // 用this替代将来创建的新对象

            this.name = name;

            this.age = age;

            this.sex = sex;

            this.sayHi = function(){

            console.log("helllo");

            };

            // 不需要添加return

        }

        // 用new关键字调用构造函数

        var p1 = new Person ("zs",18,true);

        console.log(p1);

 Person {name: "zs", age: 18, sex: true, sayHi: ƒ}

遍历对象

        var person1 = {

            name:"zs",

            age:18,

            sex:"male",

            sayHi:function(){

                console.log(this.name + "您好");

            }

        };


        // 遍历对象

        for (var k in person1){

            console.log(k+person1[k]);

        }

namezs

age18

sexmale

sayHifunction(){

                console.log(this.name + "您好");

            }

栈和堆

[if !supportLists]1、[endif]栈(操作系统):由操作系统自动分配释放,存放简单数据类型(函数的参数值,局部变量的值等)

[if !supportLists]2、[endif]堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收

 // 基础数据类型

        var a = 5;

        var b = a;  //将a内部存储的数据5复制了一份给了b

        a = 10;

        console.log(a);

        console.log(b);


        // 复杂数据类型

        var p1 ={

            name : "zs",

            age : 18,

            sex : "male"  

        };

        var p = p1;

        // p1将内部存储的指向对象原型的地址复制给了p

        // 两个变量之间是一个联动的关系,一个变化,会引起另一个变化

        p.name ="ls";

        console.log(p);

        console.log(p1);

        // 数组和函数存储在变量中时,也是存储地址

        var arr = [1,2,3,4]

        var arr2 = arr;

        arr[4]=5;

        console.log(arr);

        console.log(arr2);

10

5

{name: "ls", age: 18, sex: "male"}

{name: "ls", age: 18, sex: "male"}

(5) [1, 2, 3, 4, 5]

(5) [1, 2, 3, 4, 5]

MDNhttps://developer.mozilla.org/zh-CN/

        console.log(Math.random());

Math.PI  圆周率

Math.random()  生成随机数

Math.floor()/Math.ceil()  向下取整/向上取整

Math.round()  取整,四舍五入

Math.abs()  绝对值

Math.max()/Math.min()  最大值/最小值

Math.sin()/Math.sin()  正弦/余弦

Math.pow()/Math.sqrt()  求指数次幂/求平方根

得到一个两数之间的随机整数

function getRandomInt(min, max) {

  min = Math.ceil(min);

  max = Math.floor(max);

  return Math.floor(Math.random() * (max - min)) + min; //不含最大值,含最小值

}

检测某个实例对象是否属于某个对象类型:

         var arr2 = new Array("zs","ls","ww");

         var a = {};

         function fun(){

             console.log(1);

         }

         console.log(arr2 instanceof Array);

         console.log(a instanceof Array);

         console.log(fun instanceof Function);

true

false

true

数组方法-首尾操作方法:

        // 尾推

        var arr = [1,2,3,4];

        console.log(arr.push(5,6,7,8));

        console.log(arr);


        // 尾删,删除最后一项数据

        // 不需要传参

        console.log(arr.pop());

        console.log(arr);


        // 首删,删除第一项数据,不需要传参

        console.log(arr.shift());

        console.log(arr);


        // 首添,参数与push方法类似

        console.log(arr.unshift(-1,0));

        console.log(arr);

8

(8) [1, 2, 3, 4, 5, 6, 7, 8]

8

(7) [1, 2, 3, 4, 5, 6, 7]

1

(6) [2, 3, 4, 5, 6, 7]

8

(8) [-1, 0, 2, 3, 4, 5, 6, 7]

        // 将数组的第一项移动到最后一项

        // 删除第一项

        // 将删除的项添加到最后一项

        var arr = [1,2,3,4];

        arr.push(arr.shift());

        console.log(arr);

[if !supportLists](4) [endif] [2, 3, 4, 1]

数组方法-合并方法concat():

将两个数组合并成一个新的数组,原数组不受影响。参数位置可以是一个数组字面量、数组变量、零散的值

        var arr = [1,2,3,4];

        // 参数:数组、数组的变量、零散的值

        // 返回值:一个新的拼接后的数组

        var arr1 = arr.concat([5,6,7]);

        var arr = [8,9,10];

        var arr1 = arr.concat(ar);

        var arr1 = arr.concat(11,12,13);

        console.log(arr);

        console.log(arr1);

数组方法-拆分方法slice(start,end):

[if !supportLists]1、[endif]从当前数组中截取一个新的数组,不影响原来的数组,返回一个新的数组,包含从start到end(不包含该元素)的元素

[if !supportLists]2、[endif]参数区分正负,正值表示下标位置,负值表示从后面往前数第几个位置,参数可以只传递一个,表示从开始位置截取到字符串结尾

        // 拆分方法

        // 参数为正

        var arr1 = arr.slice(3,7);

        console.log(arr);

        console.log(arr1);

(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

(4) [4, 5, 6, 7]

        // 参数为负

        var arr1 = arr.slice(-7,-1);

        console.log(arr);

        console.log(arr1);

(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

(6) [4, 5, 6, 7, 8, 9]

        // 只写一个参数

        var arr1 = arr.slice(7);

        console.log(arr);

        console.log(arr1);

(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

(3) [8, 9, 10]

数组方法-splice

删除、插入、替换:

splice(index,howmany,element1,element2,...)

用于插入、删除或替换数组的元素

index:删除元素的开始位置

howmany:删除元素的个数,可以是0

element1,element2:要替换的新的数据

        var arr = [1,2,3,4,5,6,7,8,9,10];

        // 删除功能,传前两个参数

        console.log(arr.splice(2,5));

        console.log(arr);

(5) [3, 4, 5, 6, 7]

(5) [1, 2, 8, 9, 10]

        // 替换功能,传3个及以上的参数

        arr.splice(2,5,"hello","dog");

        console.log(arr);

[if !supportLists](7) [endif] [1, 2, "hello", "dog", 8, 9, 10]

   // 插入功能,传3个及以上的参数,但是第二个参数必须为0

        arr.splice(2,0,"hello");

        console.log(arr);

[if !supportLists](11) [endif] [1, 2, "hello", 3, 4, 5, 6, 7, 8, 9, 10]

indexOf/lastIndexOf

        var arr = [1,2,3,4,5,6,7,8,9,10,4,5];

   // 查找某个元素在数组中从前往后第一次 出现位置的下标

        console.log(arr.indexOf(4));

   // 查找某个元素在数组中从前往后最后一次 出现位置的下标

        console.log(arr.lastIndexOf(4));

        console.log(arr.lastIndexOf(16));

3

10

-1

数组方法-倒序和排序:

        var arr = [1,2,3,4,5,6,7,8,9,10];

        // 倒序排列

        console.log(arr.reverse());

        console.log(arr);

(10) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

(10) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

        // 排序,默认按照字符编码顺序从小到大排列

        // 添加一个比较函数的参数

        var arr = [1,2,3,4,5,6,7,8,9,10,20,30];

        arr.sort(function(a,b){

            if(a>b){

                return -1;

            }

            else if(a<b){

                return 1;

            }

            else {

                return 0;

            }

        })

        console.log(arr);

[if !supportLists](12) [endif] [30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

        // 转字符串方法

        var str = arr.join("");

        console.log(str);

123456789102030

清空数组:

[if !supportLists]1、[endif](推荐)arr=[];

[if !supportLists]2、[endif]arr.length=0;

[if !supportLists]3、[endif]arr.splice(0,arr.length);


字符串方法:

        var str = "这是一个普通的字符串,abc,   %^&";

        // 长度属性

        console.log(str.length);


        // charAt()返回指定下标位置的字符

        console.log(str.charAt(6));


   // indexOf()返回子串在原始字符串中第一次出现位置的下标

        console.log(str.indexOf("字符串"));


        // concat()字符串拼接

        var str2 = str.concat("好的","再见");

        console.log(str);

        console.log(str2);


        // split()分割字符串成一个数组

        var arr = str.split("");

        console.log(arr);

21

7

这是一个普通的字符串,abc,   %^&

这是一个普通的字符串,abc,   %^&好的再见

[if !supportLists](21) [endif] ["这", "是", "一", "个", "普", "通", "的", "字", "符", "串", ",", "a", "b", "c", ",", " ", " ", " ", "%", "^", "&"]

        // split()分割字符串成一个数组

        var arr = str.split(",");

        console.log(arr);

[if !supportLists](3) [endif] ["这是一个普通的字符串", "abc", "   %^&"]

        // 字符串内容倒置

        // var arr = str.split("");

        // arr.reverse();

        // str = arr.join("");

        str = str.split("").reverse().join("");

        console.log(str);


        // 三种截取字符串方法:

        // slice(start,end)从开始位置截取到结束位置,但是不包含结束位置

        var str1 = str.slice(3,7);

        var str1 = str.slice(-7);


        // substr(start,howmany)从开始位置截取一定长度

        var str2 = str.substr(3,7);

        var str2 = str.substr(-9);


        // substring(start,end)参数必须是整数,比较两个数的大小,小的作为开始,大的作为结束

        var str3 = str.substring(3,7);

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、Math对象 Math.PI圆周率π Math.ceil()向上取整返回的是大于或等于函数参数,并且与之最接近...
    Lizzy95阅读 2,910评论 0 0
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,733评论 0 13
  • JavaScript基础语法 主要内容 JavaScript 简介 ​ JavaScript 是一种具有面向对象能...
    一纸油伞阅读 1,589评论 0 0
  • https://www.zcfy.cc/article/37-essential-javascript-inter...
    小明yz阅读 3,262评论 0 2
  • 1、使用typeof bar ===“object”来确定bar是否是一个对象时有什么潜在的缺陷?这个陷阱如何避免...
    深海鲫鱼堡阅读 3,907评论 1 1

友情链接更多精彩内容