js创建对象的三种方法:文本标识法和构造器函数法和返回对象的函数

文本标识法和定义变量差不多,像这样

var obj = {name:'HanMM','2':'Dali'}; 

  

函数构造器法 

先创建一个对象函数 

function Obj() {

this.address='New York' ,

        this.sayHello = function (){

return this.address; 

        } 

然后用new关键字来穿件具体的对象

 var obj001 = new Obj();

然后我们就可以调用对象了 

obj.name//  HanMM

 obj['2']//Dali

obj.sayHello();//New York 

 而如果,我们在使用构造器函数创建对象的时候忘了使用new关键字的话,像这样 var obj002=Obj();去实例化的话,其实和声明函数没有区别,由于该函数没有显式返回值,那么返回值为undefined,我们只是创建了一个函数,而非对象的实例。

当我们想访问其中的某个属性时得到的结果也只能是 Uncaught TypeError: Cannot read property 'address' of undefined

返回对象的函数 

  function tom(Name) { 

return { name: Name } 

} ;

var obj007 = tom('王大锤') ;

obj007.name;//   王大锤 

obj007.constructor;// ==>> function Object();

 constructor property 构造器属性,其实就是一个指向于一个用于创建该对象的构造器函数的引用;

 也就是说function TomG(){}; var obj004= new TomG();

 obj004.constructor;// ==>> function TomG();

而如果使用文本标识法创建的对象var tomG = {};

 tomG.constructor 相当于使用js内置构造器Objet()函数创建的,故 tomG.constructor; // ==>> function Object();

PS其实构造器函数也是可以返回对象的,且当且仅当构造器函数返回的是对象的时候才可以当做对象使用,若返回其他类型的数据则此时的对象是this,即window;

function Objs() {

this.address='New York' ;

        return {  home:'London' }

}

var obj008 = new Objs();

typeof obj008.address;//undefined;

obj008.home;//London;

原文地址:https://www.cnblogs.com/Aladingding/p/4600265.html