Javascript 原型 属性 : 基于原型的继承
Javascript Prototype property : Prototype based Inheritance
我对 Javascript 的原型 属性 感到困惑。
请参阅下面的代码。
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); // Outputs: true
的原因,因此我们能够在 s1 上调用 toString() 。但是我对 var x = "someString" or var x = something.
的情况感到困惑
感谢您的宝贵时间。
字符串原始值(如 "hello world"
)和字符串对象之间存在差异。原始类型——字符串、数字、布尔值——不是对象。
当原始值像对象一样使用时,使用.
或[]
运算符,运行时通过相应的构造函数隐式地将值包装在对象中(String
、Number
、Boolean
)。原始值没有属性,但由于自动换行,您可以执行类似
的操作
var n = "hello world".length;
而且有效。
我对 Javascript 的原型 属性 感到困惑。 请参阅下面的代码。
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); // Outputs: true
的原因,因此我们能够在 s1 上调用 toString() 。但是我对 var x = "someString" or var x = something.
感谢您的宝贵时间。
字符串原始值(如 "hello world"
)和字符串对象之间存在差异。原始类型——字符串、数字、布尔值——不是对象。
当原始值像对象一样使用时,使用.
或[]
运算符,运行时通过相应的构造函数隐式地将值包装在对象中(String
、Number
、Boolean
)。原始值没有属性,但由于自动换行,您可以执行类似
var n = "hello world".length;
而且有效。