为什么不能下面这样写

来源:4-2 [JavaScript]创建对象、原型链

iceminit

2016-07-25 12:52

function foo(){}

var obj=new foo();

obj.prototype.name=1;

obj.prototype.sex=2;

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

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

写回答 关注

3回答

  • cchh1
    2016-07-25 16:25:16
    已采纳

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

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

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

    qq_慕慕9... 回复icemin...

    应该是 obj.__proto__=== foo.prototype; obj作为foo实例化的对象只有proto和constructor属性;prototype是函数固有的属性,然后因为函数也是对象,所以foo也有proto和constructor属性;

    2019-10-22 10:33:19

    共 3 条回复 >

  • AsyncNooby
    2016-08-02 17:06:07
    <script>
    function foo(){
    }
    //prototype属性也是个对象
    foo.prototype={
            name:1,
            sex:2
    };
    var obj=new foo();
    console.log(obj.name+obj.sex);
    </script>


  • 慕函数9642432
    2016-07-25 15:15:05

    function foo(){}

    var obj=new foo();

    foo.prototype.name=1;

    foo.prototype.sex=2;

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

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

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281111 学习 · 1020 问题

查看课程

相似问题