何时使用构造函数,构造函数使用new关键字
Posted slightfly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了何时使用构造函数,构造函数使用new关键字相关的知识,希望对你有一定的参考价值。
关于何时使用js的构造函数 一般创建多个有相同属性/方法的对象,就会去写构造函数,就会去new 如果只是一个单独的对象,直接使用字面量就行了 var person = name:‘postbird‘, address:‘earth‘, sayHello:function()console.log(‘Hello,I am ‘ + this.name); ;
js构造函数创建对象加new问题 /* new操作符做了些什么呢: 1、创建一个新对象 2、将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) 3、执行构造函数中的代码(为这个新对象添加属性) 4、返回新对象。 */ function Obj(name) this.name = name; console.log(this); // 严格模式下是undefined 非严格模式下是window对象 var a= Obj("name11"); // undefined a.name; //Uncaught TypeError: Cannot read property ‘name‘ of undefined var b = new Obj(‘name22‘); //Obj name: "name22" b.name; //name22 //使用new操作符创建对象,并且构造函数没有返回值或者返回为基本数据类型,那么返回该对象 function Obj(name) this.name = name; var b = new Obj(); //Obj name: undefined function Obj(name) this.name = name; return ‘chic‘; var b = new Obj(); //Obj name: undefined //使用new操作符创建对象,并且构造函数返回一个引用类型 function Obj02(name) this.name = name; return ; var a02 = Obj02("name11"); //Object a02.name; //undefined var b02 = new Obj02(‘name22‘); //Object b02.name;//undefined /** * 总结: * 对于不加new来执行构造函数来说,返回值就是构造函数的执行结果 * 对于加new关键字来执行构造函数而言,如果return的是基本数据类型,那么忽视掉该return值, * 对于加new关键字来执行构造函数而言,如果返回的是一个引用类型,那么返回该引用类型 */
如果你的对象有很多实例,或者涉及继承或者构造函数传参 function Person(name,address) this.name = name; this.address = address; Person.prototype.sayHello = function() console.log(‘Hi I am ‘ + this.name); var p1 = new Person(‘postbird‘,‘earth‘); var p2 = new Person(‘ptbird‘,‘month‘); 总的来说,构造函数应用比较广泛,如果只是简单地对象,使用字面量就够了。 构造函数在对象实例化、继承等应用还是比较多的
以上是关于何时使用构造函数,构造函数使用new关键字的主要内容,如果未能解决你的问题,请参考以下文章