微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript中的原型

虽然我已经阅读了很多关于它的内容,但我无法理解原型概念.

为什么有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”.

原文地址:https://www.jb51.cc/js/429352.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐