本篇文章主要介绍了"JavaScript中的原型继承基础学习jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播",主要涉及到javascript方面的内容,对于Javascriptjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
大多数编程语言中,都有类和对象,一个类可以继承其他类。在JavaScript中,继承是基于原型的(prototype-based),这意味着JavaScript...
var animal = { eats: true }
rabbit = Object.create(animal)
alert(rabbit.eats) // true
上面代码创建了一个空rabbit对象,并且原型设置为animal
rabbit对象创建好以后,我们可以往里添加属性了:
var animal = { eats: true }
rabbit = Object.create(animal)
rabbit.jumps = true
Object.creat函数的第二个参数props是可选的,它允许像新对象设置属性。这里就省略了,因为我们关系的继承。
(1)Object.getPrototypeOf(obj)
返回obj.__proto__的值。这个函数是标准的,可以在不能直接访问__proto__属性的浏览器中使用了。
var animal = {
eats: true
}
rabbit = Object.create(animal)
alert( Object.getPrototypeOf(rabbit) === animal ) // true
现代浏览器允许读取__proto__属性值,但是不能设置。
3. The prototype
有一些好的跨浏览器的方式设置__proto__属性,这将会使用构造器函数(constructor functions)。记住!任何函数创建一个对象都是通过new关键字的。
一个栗子:
function Rabbit(name) {
this.name = name
}
var rabbit = new Rabbit('John')
alert(rabbit.name) // John
new操作将原型的属性设置到rabbit对象的的__proto__属性中了。
让我们来看看它的原理,例如,new Rabbit 对象,而Rabbit是继承animal 的。
var animal = { eats: true }
function Rabbit(name) {
this.name = name
}
Rabbit.prototype = animal
var rabbit = new Rabbit('John')
alert( rabbit.eats ) // true, because rabbit.__proto__ == animal
Rabbit.prototype = animal 字面量意味着:对所有由new Rabbit创建的对象设__proto__ = animal
4. 跨浏览器 Object.create(proto)
Object.create(prop)函数功能的强大的,因为它允许从给定的对象直接继承。它可以由如下代码模拟:
function inherit(proto) {
function F() {}
F.prototype = proto
return new F
}
inherit(animal) 与Object.create(animal)是完全等同的,返回一个空的对象,并且object.__proto__ = animal。
一个栗子:
var animal = { eats: true }
var rabbit = inherit(animal)
alert(rabbit.eats) // true
alert(rabbit.hasOwnProperty('eats')) // false, from prototype
来看一下它的原理是什么:
function inherit(proto) {
function F() {} // (1)
F.prototype = proto // (2)
return new F() // (3)
}