<script>
Function.pototype={
eat:function(){
console.log("说话");
}
}
function Person(name,age){
this.name=name;
this.age=age;
this.country=function(){
console.log(this.name+"来自"+country);
};
}
Person.eat();
</script>
*****为什么最后报错说 eat()不是一个function啊?*****
黄舟2017-04-10 16:24:17
你在Console里面试一下就会知道,对Function.prototype赋值并没有产生效果。写完了Function.prototype还是{},所以你调用Person.eat当然会失败。
怪我咯2017-04-10 16:24:17
首先prototype
打错了。。。另外我在控制台试着打印Function.prototype
发现返回的是一个空函数,不是一个对象,所以你这样赋值应该是错的。
大家讲道理2017-04-10 16:24:17
因为类似于Object.prototype
和Function.prototype
等是不可以更改的,就类似与下面的这个obj对象的x属性:
var obj = {},
a = {x: 1};
Object.defineProperty(obj,'x',{
enumerable: false,
configurable: false,
writable: false,
value: a
});
obj.x = {};
console.log(obj.x === a); // 还是a对象
console.log(obj.x.x); // 20,这个对象可以更改
怪我咯2017-04-10 16:24:17
Person.prototype.eat=function(){
console.log("说话");
}
function Person(name,age){
this.name=name;
this.age=age;
this.country=function(){
console.log(this.name+"来自"+country);
};
}
Person.eat();
我不懂你什么意思,是这个吗