JS笔记(6)

本文介绍了JavaScript中使用工厂方法创建对象,构造函数的区别,以及原型对象的使用。还详细讲解了数组的创建、操作方法(如push、pop、unshift和shift)和垃圾回收的基本概念。
摘要由CSDN通过智能技术生成

1.this

 2.使用工厂方法创建对象

批量创建对象

        function createPerson(name,age,gender){
var obj=new Object();
obj.name=name;
obj.age=age;
obj.gender=gender;
obj.sayName=function(){
    alert(this.name);
}
return obj;
        }
        var obj1=createPerson("Lisa",18,"woman");
        var obj2=createPerson("Rose",19,"woman");
        var obj3=createPerson("Jisoo",20,"woman");
        var obj4=createPerson("Jenny",21,"woman");
        console.log(obj1);
        console.log(obj2);
        console.log(obj3);
        console.log(obj4);

3.构造函数

1)使用工厂法创建的对象,使用的构造函数都是Object,所以创建的对象都是Object这个类型,就导致无法区分出多种不同的类型对象

        function Person(name,age,gender){
this.name=name;
this.age=age;
this.gender=gender;
this.sayName=function(){
    alert(this.name);
}
        }
        var per=new Person("Rose",18,"woman");
        console.log(per instanceof Person);
        console.log(per instanceof Object);

2)使用 istanceof  可以检查一个对象是否是一个类的实例

语法:

对象  istanceof  构造函数

如果是,则返回  true,否则返回false

所有的对象都是Object的后代

所以任何对象和Object 在instanceof  检查时都会返回true

3)this的情况

1.当以函数的形式调用时,this是window

2.当以方法的形式调用时,谁调用方法this就是谁

3.当以构造函数的形式调用时,this就是新创建的那个对象

4.构造函数的修改

将sayName方法在全局作用域中定义

        function Person(name,age,gender){
this.name=name;
this.age=age;
this.gender=gender;
this.sayName=fun;
}
 function fun(){
    alert("My name is "+this.name);
 };  

        var per=new Person("Rose",18,"woman");
        var per2=new Person("Rose7",18,"woman");
 per.sayName();
 per2.sayName();
console.log(per.sayName==per2.sayName);

 

5.原型对象

Person.prototype.sayName=function(){
    alert("My name is "+this.name);
}

        var per=new Person("Rose",18,"woman");
        var per2=new Person("Rose1",18,"woman");
 per.sayName();
 per2.sayName();

 2)使用  in  检查对象中是否含有莫格属性时,如果对象中没有但原型中有,也会返回true

可以使用对象的hasOwnProperty( )  来检查自身中是否含有该属性

使用该方法只有当对象自身中含有该属性时,才会返回true

 6.toString( )

当我们直接在页面中打印一个对象时,事实上输出的对象是toString( )  方法的返回值

如果希望在输出对象时不输出[Object Object],可以为对象添加一个toString( )方法

 Person.prototype.toString=function(){
    return this.name+" "+this.age+" "+this.gender;
 };

7.垃圾回收 

var obj=new Object();
obj=null;

 8.数组简介

2)使用typeof  检查一个数组时,会返回object

3)向数组中添加元素

语法:

数组[索引]=值

 4)读取数组中的元素

语法:数组[索引]

如果读取不存在的索引,它不会报错而是返回undefined

5)获取数组的长度

对于连续的数组,使用length可以获取到数组的长度(元素的个数)

对于非连续的数组,使用length会获取到数组最大的索引+1

尽量不要创建非连续的数组

修改length

如果修改的length大于原长度,则多出的部分会空出来

如果修改的length小于原长度,则多出的元素会被删除

6)向数组的最后一个元素添加元素

语法:数组[数组.length]=值

        var arr=new Array();
        arr[0]=1;
        arr[1]=2;
        arr[2]=3;
        arr[3]=4;
        console.log(arr[1]);
        console.log(arr.length);
        arr.length=10;
        console.log(arr);
        arr[arr.length]=80;
        console.log(arr);

                             

9.数组字面量 

1)使用字面量来创建数组

语法:[ ]

var arr=[];

2)使用字面量创建数组时,可以在创建时就指定数组中的元素

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

3)使用构造函数创建数组时,也可以同时添加元素,将要添加的元素作为构造函数的参数传递

元素之间使用  ,  隔开

var arr2=new Array(10,20,30);

4)创建一个数组中只有一个元素10

arr=[10];

5)创建一个长度为10的数组

arr2=new Array(10);

6)数组中的元素可以是任何的数据类型,可以是对象也可以是函数

7)数组中也可以放数组(二维数组)

10.数组的四个方法

1)push( )

该方法可以向数组的末尾添加一个或多个元素,并返回数组新的长度

可以将要添加的元素作为方法的参数传递,这样这些元素将会自动添加到数组的末尾

该方法会将数组新的长度作为返回值返回

     var arr=["one","two","three"];
        var result=arr.push("four","five");
        console.log(arr);
        console.log(result);

2)pop( )

该方法可以删除数组的最后一个元素,并将被删除的元素作为返回值返回

        var arr=["one","two","three"];
        arr.push("four","five");
        var result=arr.pop();
        console.log(arr);
        console.log(result);

 3)unshift( ) 

向数组开头添加一个或多个元素,并返回新的数组长度

向前边插入元素后,其他元素的索引会依次调整

     var arr=["one","two","three"];
        arr.push("four","five");
        var result=arr.unshift("zero");
        console.log(arr);
        console.log(result);

4)shift( )

可以删除数组的第一个元素,并将被删除的元素作为返回值返回

 

    var arr=["one","two","three"];
        arr.push("four","five");
        var result=arr.shift("one");
        console.log(arr);
        console.log(result);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值