1. 程式人生 > >言簡意賅,告訴你object.create()和new object()區別所在!

言簡意賅,告訴你object.create()和new object()區別所在!

1.Object.create(obj)建立的是一個空物件,但是將obj的屬性鍵值對繫結在了建立的新物件的_proto_原型屬性上,相當於綁定了新建立的物件的原型,將物件obj繼承到_proto_屬性上

2.new Object()

(1)是建立一個新的物件,例項化一個新的物件;

  完整例子?看這裡咯!???              

//定義class,建立一個person建構函式

var Person = function (firstName) { this.firstName = firstName; };    

 //定義person的method 

Person.prototype.sayHello = function() { console.log("Hello, I'm " + this.firstName); }; 

//例項化物件 

var person1 = new Person("Alice"); 

//例項化的物件呼叫method 

person1.sayHello();        // logs "Hello, I'm Alice"

(2)並且使用建構函式初始化新物件的成員變數;將Alice變數做初始化

(3)新的例項化物件的原型為建構函式的prototype物件,即Person.prototype物件。

所以!!!!!

person1.__proto__指向Person.prototy,person1的原型就是Person.prototype。

javascript使用__proto__指向物件的原型。即:

console.log(Person.prototype)// { sayHello: [Function] }

console.log(person1.__proto__) // { sayHello: [Function] }

另外:

Js中只有function才有prototype屬性,即建構函式,直接就可以找到,預設它的prototype屬性值是一個空物件,即{},例如:

var test = function () {return 'haha';};

console.log(test.prototype); // 輸出{}

但物件和陣列是通過其__proto__屬性找到其對應構造方法的prototype