为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不能下面这样写

function foo(){}

var obj=new foo();

obj.prototype.name=1;

obj.prototype.sex=2;

console.log(obj.name+obj.sex)

obj.prototype指向的不是foo的prototype吗,这样写有什么错误

正在回答

4 回答

obj 是 foo 的一个实例,它不是一个函数,所以没有prototype

  • 准确的说,只有构造函数才有prototype属性

  • 通常我们自定义的函数都属于构造函数,所以都有此属性

4 回复 有任何疑惑可以回复我~
#1

iceminit 提问者

非常感谢!
2016-07-26 回复 有任何疑惑可以回复我~
#2

iceminit 提问者

视频里面讲的obj的prototype指向的是foo的prototype,那obj不是有prototype属性吗
2016-07-26 回复 有任何疑惑可以回复我~
#3

qq_慕慕947699 回复 iceminit 提问者

应该是 obj.__proto__=== foo.prototype; obj作为foo实例化的对象只有proto和constructor属性;prototype是函数固有的属性,然后因为函数也是对象,所以foo也有proto和constructor属性;
2019-10-22 回复 有任何疑惑可以回复我~
<script>
function foo(){
}
//prototype属性也是个对象
foo.prototype={
        name:1,
        sex:2
};
var obj=new foo();
console.log(obj.name+obj.sex);
</script>


3 回复 有任何疑惑可以回复我~

function foo(){}

var obj=new foo();

foo.prototype.name=1;

foo.prototype.sex=2;

console.log(obj.name+obj.sex);

这样写就可以了,此时obj继承foo的prototype

3 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么不能下面这样写

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信