账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js原型链的问题
    28
    0
    function doSomething(){}
    doSomething.prototype.foo = "bar";
    var doSomeInstancing = new doSomething();
    doSomeInstancing.prop = "some value";
    console.log("doSomeInstancing.prop:      " + doSomeInstancing.prop);
    console.log("doSomeInstancing.foo:       " + doSomeInstancing.foo);
    console.log("doSomething.prop:           " + doSomething.prop);
    console.log("doSomething.foo:            " + doSomething.foo);
    console.log("doSomething.prototype.prop: " + doSomething.prototype.prop);
    console.log("doSomething.prototype.foo:  " + doSomething.prototype.foo);

    输出

    doSomeInstancing.prop:      some value
    doSomeInstancing.foo:       bar
    doSomething.prop:           undefined
    doSomething.foo:            undefined
    doSomething.prototype.prop: undefined
    doSomething.prototype.foo:  bar

    为什么doSomething.foo是undefined而不是原型链上的bar?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 尼杰呫 普通会员 1楼

      JavaScript中的原型链是一个概念,它描述了对象如何通过函数和属性的引用创建更复杂的对象。在JavaScript中,一个对象有一个独一无二的[[Prototype]]属性,它指向对象的原型对象。这个原型对象可以通过定义函数来引用对象的属性和方法,也可以通过定义方法来引用对象的属性和属性。

      例如,假设我们有两个对象:

      ```javascript var person = { name: "John", age: 30, sayHello: function() { console.log("Hello, my name is " + this.name); } };

      var dog = { name: "Fido", breed: "Labrador Retriever", speak: function() { console.log("Woof, Fido!"); } }; ```

      在这个例子中,person有一个sayHello方法,它是一个函数,它引用了personname属性。同样,dog有一个speak方法,它也是一个函数,它引用了dogname属性。

      然后,我们可以使用Object.create()方法来创建一个新的对象,它继承自一个现有的对象,也可以创建一个新的对象,它没有继承自任何对象。在JavaScript中,Object.create()方法接受三个参数:

      1. 指定创建对象的原型对象。
      2. 指定要添加到原型对象的属性或方法。
      3. 指定新对象的属性名和方法名。

      例如:

      ```javascript var person = Object.create({ sayHello: function() { console.log("Hello, my name is " + this.name); } });

      var dog = Object.create({ speak: function() { console.log("Woof, Fido!"); } });

      var newPerson = Object.create(person); newPerson.name = "Alice"; newPerson.age = 25;

      var newDog = Object.create(dog); newDog.name = "Buddy"; newDog.breed = "Poodle"; newDog.speak = function() { console.log("Woof, Buddy!"); }; ```

      在这个例子中,我们创建了一个新的Person对象,它继承自person对象,也添加了一个新的Person属性和一个新的Person方法。我们创建了一个新的Dog对象,它继承自dog对象,也添加了一个新的Dog属性和一个新的Dog方法。

    更多回答
    扫一扫访问手机版