,,JavaScript构造函数详解

,,JavaScript构造函数详解

函数是初始化实例对象,其原型属性是继承实例对象。本文将分享javascript构造函数的详细讲解,让对js构造函数感兴趣的朋友一起学习。

函数是初始化实例对象,其原型属性是继承实例对象。

施工人员注意事项:

1.默认函数是大写的。

2.构造函数没有返回任何东西。new运算符将自动创建给定的类型并返回它们。调用构造函数时,new会自动创建这个对象,类型是构造函数类型。

3.调用返回也可以显示在构造函数中。如果返回值是一个对象,将返回它而不是新创建的对象实例。如果返回值是原始类型,它将被忽略,并将返回新创建的实例。

功能人(姓名){

this.name=name

}

var p1=新人(' John ');

相当于:

功能人(姓名){

Object obj=new Object();

obj.name=name

返回obj

}

var P1=person(' John ');

4.因为构造函数也是一个函数,可以直接调用,但是它的返回值是未定义的。此时,构造函数中的这个对象等于全局的这个对象。This.name实际上是在创建一个全局变量名。在严格模式下,通过new调用Person构造函数时,会出现错误。

5.您还可以在构造函数中使用Object.defineProperty()方法来帮助我们初始化:

功能人(姓名){

Object.defineProperty(this,' name'{

get :function(){

返回名称;

},

集合:函数(新名称){

name=newName

},

Enumerable :true,//enumerable,默认为false。

可配置:真//可配置

});

}

var p1=新人(' John ');

6.在构造函数中使用原型对象

//这比直接在构造函数中编写要高效得多

person . prototype . say name=function(){

console . log(this . name);

};

但如果方法多了,大多数人会采用更简洁的方法:直接用对象的字面形式替换原型对象,如下:

Person.prototype={

sayName :function(){

console . log(this . name);

},

toString :function(){

return“[Person ' this . name ']”;

}

};

这种方法非常流行,因为您不必多次键入Person.prototype,但是有一个副作用您必须注意:

以文字形式重写原型对象会改变构造函数的属性,因此它指向Object而不是Person。这是因为原型对象有一个构造函数属性,而其他对象实例没有。当创建一个函数时,它的prototype属性也被创建,prototype对象的constructor属性指向该函数。当原型对象以对象的文字形式重写时,其构造函数属性将被设置为泛型Object对象。为了避免这种情况,您需要在重写原型对象时手动重置构造函数,如下所示:

Person.prototype={

施工方:人,

sayName :function(){

console . log(this . name);

},

toString :function(){

return“[Person ' this . name ']”;

}

};

再次测试:

p1 .构造者===人

真实的

p1.constructor===Object

错误的

p1人员实例

真实的

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: