JavaScript 原型(prototype)设计

标签 javascript javascript-objects

添加方法作为原型(prototype)和在构造函数内部定义有什么区别

例如:之间

function Car( model, year, miles ) {
this.model = model;
this.year = year;
this.miles = miles;
this.toString = function () {
         return this.model + " has done " + this.miles + " miles";
};
}

function Car( model, year, miles ) {
this.model = model;
this.year = year;
this.miles = miles;
}

Car.prototype.toString = function () {
        return this.model + " has done " + this.miles + " miles";
};

最佳答案

  1. this.toSting 向使用 Car 构造函数创建的每个新对象添加一个属性。

  2. Car.prototype 是一个单独的对象,所有使用 new Car(...) 创建的对象都继承其属性。由于 toString 是原型(prototype)对象的属性,因此所有 Car 对象都会继承该属性。

var car = new Car(...);

两者都可以通过调用car.toString()来访问。

但是,当进行调用时,首先会在 car 中搜索 toString 属性。如果不存在,则在原型(prototype)中搜索 toString 并调用它。如果两者都不存在,则沿着链向上搜索原型(prototype)原型(prototype),直到在基础对象原型(prototype)上找到 toString

关于JavaScript 原型(prototype)设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34525204/

相关文章:

javascript - jQuery - 用 radio 的值填充最近的隐藏输入

javascript - 使用javascript对象的未定义错误

javascript - 为对象的键分配多个值

javascript - 在 React 中将类组件转换为功能组件

javascript - AngularJS 更新 ng-include 和 ng-repeat 中的 $scope

javascript - 预期数字,但返回字符串

创建对象后的 JavaScript 函数

javascript - 如何在 Javascript 中将数组值或对象复制到另一个变量而不复制其引用?

javascript - 如何分配数组中的所有对象?

javascript - 无法在处理程序中获取 Dojo 文本框值