自定义对象如何从Javascript对象继承
自定义创建的对象如何访问方法,如自定义对象如何从Javascript对象继承,javascript,Javascript,自定义创建的对象如何访问方法,如.toString() 方法,它是一个对象方法。自定义类如何链接到对象 条款规定 所有对象最终都会在其末尾具有对象构造函数 原型链。这意味着添加到 对象属性对所有对象自动可用 在前面的示例中,如果我们调用rufus.toString(),javascript 检查鲁弗斯物体,然后是猫物体,然后是宠物 对象宠物对象的原型是用该对象创建的 构造函数(使用对象文字快捷方式),以便javascript 然后在对象的原型上找到toString()方法 现在读完这篇文章后,我
.toString()
方法,它是一个对象方法。自定义类如何链接到对象
条款规定
所有对象最终都会在其末尾具有对象构造函数
原型链。这意味着添加到
对象属性对所有对象自动可用
在前面的示例中,如果我们调用rufus.toString(),javascript
检查鲁弗斯物体,然后是猫物体,然后是宠物
对象宠物对象的原型是用该对象创建的
构造函数(使用对象文字快捷方式),以便javascript
然后在对象的原型上找到toString()方法
现在读完这篇文章后,我明白了为了从一个对象继承,我们必须在一个对象的函数构造函数原型中指定我们想要从中继承的对象。现在我读到prototype属性默认为空。那么一个对象怎么能有toString()属性呢?我不明白这句话
Pet对象的原型是用对象构造函数创建的
(使用对象文字快捷方式)
更新:
我读到构造函数的prototype属性默认为空。我读到我已经把引语贴在这里了
首先,每个JavaScript函数都有一个原型属性(如下所示)
属性为空),并且可以附加属性和方法
当您要实现继承时,请单击此原型属性
那么我们如何从javascript对象继承呢?所有对象都通过原型继承继承
对象的属性。如果您这样做:
var b = {};
console.log(b.__proto__)
您可以看到从对象继承的所有属性
因此,当您执行b.toString()
时,它将在b
上查找toString()
函数,然后它将继续沿着原型链向上,最终到达具有此函数的对象
编辑:
函数构造函数与对象:
为了澄清,函数构造函数定义如下:
var a = function() {
this.b = "b";
this.c = "c";
}
将其原型设置为功能
。这可以通过执行console.log(a)
来验证
但是,我们使用a
创建如下新对象:
var d = new a();
这些对象的原型设置为Object
,同样可以通过执行console.log(d)
来验证
更多详细信息所有对象都通过原型继承继承对象的属性。如果您这样做:
var b = {};
console.log(b.__proto__)
您可以看到从对象继承的所有属性
因此,当您执行b.toString()
时,它将在b
上查找toString()
函数,然后它将继续沿着原型链向上,最终到达具有此函数的对象
编辑:
函数构造函数与对象:
为了澄清,函数构造函数定义如下:
var a = function() {
this.b = "b";
this.c = "c";
}
将其原型设置为功能
。这可以通过执行console.log(a)
来验证
但是,我们使用a
创建如下新对象:
var d = new a();
这些对象的原型设置为Object
,同样可以通过执行console.log(d)
来验证
更多详细信息参见最终指南:
所有由对象文本(即{}
创建的对象都具有相同的原型对象,我们可以在JavaScript代码中将此原型对象称为对象.prototype
)。使用new
关键字和构造函数调用创建的对象将构造函数的prototype
属性的值用作其原型。因此,由newobject()
创建的对象继承自object.prototype
,就像由{}
创建的对象一样。类似地,由new Array()
创建的对象使用Array.prototype
作为其原型,而由new Date()
创建的对象使用Date.prototype
作为其原型
因此,使用{}
文本创建的所有对象都将有对象.prototype
作为其原型,并可以访问对象.prototype
定义的方法,例如toString()
等
new
操作符用于创建和初始化新对象。new
关键字必须与函数调用一起使用。当函数调用与new
关键字一起使用时,称为构造函数调用
使用new
和函数调用创建的对象将继承构造函数的prototype
属性。因此,使用new Date()
创建的对象将从Date.prototype
继承,使用new Array()
创建的对象将从Array.prototype
继承
您可以更改此prototype
属性,使对象从您自己的自定义对象继承。比如说
function myFunction() {
this.name = 'a';
this.age = 20;
}
myFunction.prototype = {
toString: function() {
// you can override default toString() method here..
},
// you can define as many functions here as you want.
};
var myObj = new myFunction();
对象myObj
将继承自myFunction.prototype
,此对象中定义的所有方法将可用于myObj
ECMAScript 5为创建对象定义了一个新方法Object.create()
,该方法的原型不是Object.prototype
。比如说
var prototypeObject = {a: 1, b: 2, c: 3};
var obj1 = Object.create(prototypeObject);
现在,obj1'将从
prototypeObject'继承,而不是从Object继承。prototype
引用JavaScript的最终指南:
所有由对象文本(即{}
创建的对象都具有相同的原型对象,我们可以在JavaScript代码中将此原型对象称为object.prototype