gpt4 book ai didi

JavaScript 原型(prototype)属性 : Prototype based Inheritance

转载 作者:行者123 更新时间:2023-12-03 08:48:06 24 4
gpt4 key购买 nike

我对 Javascript 的原型(prototype)属性感到困惑。请参阅下面的代码。

var s = 12;
var s1 = new String();

console.log(s.constructor); // Outputs: Number() { [native code] }
console.log(s instanceof String); // Outputs: false
console.log(s instanceof Object); // Outputs: false
//console.log(toString() in s);
console.log(s.isPrototypeOf(Object)); // Outputs: false
//console.log(s.prototype.isPrototypeOf(Object));

console.log(s.hasOwnProperty ("toString")); // Outputs: false

console.log(s.toString()); // // Outputs: 12
// My Question is how does toString() function is been called, where does it falls int the prototype chain. Why is it not showing undefined.

console.log(s1.constructor); // Outputs: Number() { [native code] }
console.log(s1 instanceof String); // Outputs: true

据我了解,当我们使用上面的 {} 或构造函数(new String())创建一个对象时,它继承自 Object.prototype。这就是为什么 console.log(s1 instanceof String);//输出:true 因此我们可以在 s1 上调用 toString()。但我对 var x = "someString"或 var x = some 的情况感到困惑。

感谢您的宝贵时间。

最佳答案

字符串原始值(例如“hello world”)和 String 对象之间存在差异。原始类型——字符串、数字、 bool 值——不是对象。

当原始值像对象一样使用时,通过 .[] 运算符,运行时会通过相应的构造函数(StringNumberBoolean)。原始值没有属性,但由于自动包装,您可以执行类似的操作

var n = "hello world".length;

并且它有效。

关于JavaScript 原型(prototype)属性 : Prototype based Inheritance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32797939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com