function Person(name) {
this.name = name;
this.say = function() {
console.info('I am ' + this.name);
}
}
var p=new Person('stackoverflow');
有人告訴我,上面的代碼等同於:javascript如何創建一個對象?
function Person(name) {
this.name = name;
this.say = function() {
console.info('I am ' + this.name);
}
}
var p={};
Person.call(p,'stackoverflow');
這是真的嗎?
如果是這樣,原型如何?
javascripte中的每個對象都擁有一個原型,原型鏈持有對象的變體,我不知道這個原型是否做了某件事。
在這個例子中,當'p'的對象被創建時,它是否調用Person的超類的一些內置方法?
順便說一句,我想知道的是語法var p=new Person('stackoverflow');
做什麼?
-----------------更新------------------
function Person(name) {
this.name = name;
}
Person.prototype.say = function() {
console.info('I am ' + this.name);
}
怎麼樣,如果我把說的認定中的人函數內部:
function Person(name) {
this.name = name;
Person.prototype.say = function() {
console.info('I am ' + this.name);
}
}
也就是說,第一個擁有Person的原型? – hguser 2010-10-26 10:50:29
是的,因爲它是Person的一個實例,Person的原型的每個屬性都應用於該對象。在這兩種情況下添加'Person.prototype = {test:「test」};'並用console.dir(p)與firbug進行測試,您將看到不同之處。 – mck89 2010-10-26 10:58:30
謝謝,我測試了一下,現在我知道了:)順便說一下,Eclipse中是否有插件可以直接運行javascript並單獨運行? – hguser 2010-10-26 11:37:00