手机版

JavaScript构造函数详解

时间:2021-09-19 来源:互联网 编辑:宝哥软件园 浏览:

构造函数用于初始化实例对象,对象的prototype属性继承实例对象。

施工人员注意事项:

1.默认函数的首字母大写。

2.构造函数不显示任何返回的内容。新的运算符将自动创建给定的类型并返回它们。当调用构造函数时,new将自动创建此对象,并且类型是构造函数类型。

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

函数Person(name){ this . name=name;} var P1=new Person(' John ');相当于:

函数人(名称){ Object obj=new Object();obj.name=name返回对象;} var P1=person(' John ');4.因为构造函数也是一个函数,可以直接调用,但是它的返回值是undefine,构造函数中的这个对象等于全局的this对象。这个. name实际上是在创建一个全局变量名。在严格模式下,当您通过new调用Person构造函数时,会出现错误。

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

函数Person(name){ object . definepreproperty(this,' name ' { get : function(){ return name;},set : function(newName){ name=new name;},可枚举:true,//可枚举,缺省为false configurable:true //可配置});} var P1=new Person(' 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,但有一个副作用你必须注意:

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

person . prototype={ constructor : person,say name : function(){ console . log(this . name);},toString : function(){ return '[Person ' this . name ']';} };再次测试:

p1 .构造函数===Person

真实的

p1 .构造函数===对象

错误的

人的p1实例

真实的

版权声明:JavaScript构造函数详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。