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