取消ECMAScript规范中的一个短语

时间:2017-08-23 12:41:20

标签: javascript

我正在阅读ECMAScript语言规范,无法正确理解一个短语。

这句话是

  

由一个构造函数创建的每个对象都有一个隐式引用(的称为对象的原型)的值   其构造器的“原型”属性。

ECMAScript - 4.2.1 Objects - second paragraph

我无法理解括号called the object's prototype中的短语。

括号中的短语表示原型是隐式引用。

我的问题是:原型是参考?隐式引用是原型?其实?我一直认为原型是对象。但ECMA表示对构造函数“原型”属性值的隐式引用是对象的原型。

我正确理解ECMAScript的内容,或者我的理解是错误的?

2 个答案:

答案 0 :(得分:0)

我认为我们可以简单地将其改为

“构造函数创建的每个对象都隐式引用其构造函数的”prototype“属性的值,称为对象的原型。”

答案 1 :(得分:0)

javascript中的所有对象都从其原型中获取其属性和方法。原型词是指“某事物的第一版或初步版”。因此,无论何时在javascript中创建任何可以创建其对象的东西(类或函数),其初始骨架结构都可以称为原型。因此,假设您使用变量printStatement和方法print()定义了一个javascript类,该类的每个对象肯定都包含这两个东西。怎么样?来自您创建的原型。

function Printer(statement) {
    this.printStatement = statement;
    this.print = function()
    {
      // Any send to printer logic
      // this.printStatement.sendToPrinter();
    }
} 

上述语句定义了Printer功能的原型。

您可以将其称为Printer("Print this line").print();

现在,你的文件中有大约50行,你认为这个对象应该还有一个函数ReadPrint语句。您可以通过对象本身访问原型并将其添加到内存中。

Printer.prototype.ReadPrint = function(){
      //whatever it does
}

从下一行开始,您可以将其称为Printer.ReadPrint()

因为在javascript中,prototype是一个开放的可用对象。您可以将自己的内容添加到其定义中,例如

String.prototype.findAllIndexesOf = function(){
     //whatever it does.
}

执行此操作时,.findAllIndexesOf()将在以下行中的每个字符串对象上可用,并且可以像调用任何字符串对象上的split(), trim()和其他方法一样调用。

请注意,通过这种方式添加函数和属性不会影响原始代码,因此,如果必须将函数添加到javascript中可用的不同对象的原型中,请将这些函数添加到一个文件中,必须在您的网页上包含此文件。

请参阅以下链接

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects

并查看内置对象部分。它显示了可用的javascript对象并显示了原型的用法。单击任何对象,如数组或字符串,您将了解原型的功能。