我知道这已经被问了数百次了,但是,我似乎无法理解prototype
这是我的示例脚本
var config = {
writable: true,
enumerable: true,
configurable: true
};
var defineProperty = function(obj, name, value) {
config.value = value;
Object.defineProperty(obj, name, config);
}
var man= Object.create(null);
defineProperty(man, 'sex', "male");
var person = Object.create(man);
person.greet = function (person) {
return this.name + ': Why, hello there, ' + person + '.'
}
var p=Object.getPrototypeOf(person);
alert(p.sex);//shows male
person.prototype.age=13;//why there is a error said the prototype is undefined? I thought it supposed be man object...
var child=function(){}
child.prototype.color="red";//why this line doesn't show error? both child and person are an object .
alert(child.prototype.color);//shows red
var ch=Object.getPrototypeOf(child);
alert(ch.color);//why it is undefined? it is supposed red.
希望你能给我一些帮助...谢谢。
更新:
谢谢你们的帮助,根据 Elclanrs 的回答,以下是我学到的。
Function
是 javascript 中的内置对象之一。3 格式创建函数对象是相等的。
var function_name = new Function(arg1, arg2, ..., argN, function_body)
function function_name(arg1, arg2, ..., argN)
{
...
}
var function_name=function(arg1, arg2, ..., argN)
{
...
}
所以,这就是为什么要创建一个原型链,我们必须创建一个函数,然后用 new 关键字调用它。
Function.prototype
是对所有函数对象的引用prototype
。
干杯