虽然我已经阅读了很多关于它的内容,但我无法理解原型概念.
为什么有String和String.prototype?
如果我有“猫”:
>那是字符串还是对象?
>它是否从String或String.prototype继承了所有属性/方法?
>为什么有String和String.prototype?
>我应该调用String的String对象和String.prototype的String原型吗?
请清楚这一点.
Is that a String or an Object?
没有“cat”是原始字符串值:
typeof "cat"; // "string",a String value
"cat" instanceof String; // false
typeof new String("cat"); // "object",a String object
new String("cat") instanceof String; // true
我稍后会谈到类型和原始值.
Does it inherits all properties/methods from String or String.prototype?
好吧,当你使用property accessor operator(点或括号表示法)时,原始值在内部隐式转换为object,因此String.prototype上的所有方法都可用,例如:
当您访问:
"cat".chatAt(0);
在幕后“猫”被转换为对象:
Object("cat").chatAt(0);
这就是您可以访问值的所有继承属性的原因.
Why is there a String and String.prototype?
String是一个构造函数,允许您创建String对象或进行类型转换:
var stringObj = new String("foo"); // String object
// Type conversion
var myObj = { toString: function () { return "foo!"; } };
alert(String(myObj)); // "foo!"
String.prototype对象是String对象实例继承的对象.
我知道它很混乱,我们有String值和String对象,但大多数时候你实际上只使用字符串值,现在不要担心String对象.
Should I call String the String object and String.prototype the String prototype?
你应该调用String “The String
constructor”.
“字符串原型”没问题.
你应该知道“一切都不是一个对象”.
我们来谈谈类型,有五个language types指定:
>字符串
>数量
>布尔值
>空
>未定义
primitive value是“直接表示语言实现最低级别的数据”,是您可以拥有的最简单的信息.
先前描述的类型的值可以是:
> Null:值null.
>未定义:值未定义.
>数字:所有数字,例如0,3.1416,1000等.还有NaN和无穷大.
>布尔值:值true和false.
> String:每个字符串,例如“cat”和“bar”.