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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于 js的 __proto__
    38
    0
    JSON.parse('{"__proto__":{"a":1}}')
    
    {__proto__:{a:1}}
    

    第一句 != 第二句

    JSON.parse('{"__proto__":{"a":1}}').a == undefined
    
    {__proto__:{a:1}}.a == 1
    

    这是为什么,JSON.parse 做了什么操作,谢谢!

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

      在JavaScript中,__proto__是一个特殊的属性,用于引用一个对象的原型对象。原型对象是指一个对象的继承基础,它是所有后代对象的共同祖先,用于保存对象的属性和方法。

      以下是如何使用__proto__属性的一些基本示例:

      ``javascript // 创建一个简单的对象 const obj = { name: "John", age: 30, sayHello() { console.log(Hello, my name is ${this.name} and I am ${this.age} years old.`); } };

      // 使用原型对象 obj.proto = { sayGoodbye() { console.log(Goodbye, my name is ${this.name} and I am ${this.age} years old.); } };

      // 调用对象的属性 obj.sayHello(); // 输出:Hello, my name is John and I am 30 years old. obj.sayGoodbye(); // 输出:Goodbye, my name is John and I am 30 years old. ```

      在这个例子中,我们首先创建了一个名为obj的简单对象,它具有nameage两个属性和一个sayHello方法。然后,我们通过obj.__proto__属性访问了obj对象的原型对象,__proto__属性是一个指向Object对象的引用。

      我们为obj对象的原型对象添加了一个名为sayGoodbye的新方法。当我们调用obj.sayHello方法时,sayHello方法会被调用,而obj对象的原型对象sayGoodbye方法会被调用,因为obj对象继承了Object对象的sayGoodbye方法。

      需要注意的是,__proto__属性只存在于JavaScript对象中,数组、字符串和 Symbol等非对象类型并没有对应的__proto__属性。如果你试图访问一个非对象类型的属性,如一个数组的长度或一个字符串的长度,__proto__属性将不会返回任何值。例如:

      javascript console.log(obj.length); // 输出:undefined console.log(arr.length); // 输出:undefined console.log(str.length); // 输出:undefined

      在这些情况下,你可以使用length属性或者数组的length方法来获取数组或字符串的长度。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部