什么是原型对象与原型链
程序员文章站
2024-03-06 16:47:56
...
要了解原型对象,先了解对象
数据类型
undefined、null、boolean、number、string、object
引用类型String,Number,Boolean,Object,Function,Array,Data,RegExp,Error
我们可以使用九中引用类型来创建对象实例
原型对象
创建三个对象
var str = new String('abc')
console.log(str)
var num = new Number(123)
console.log(num)
var obj = new Object()
obj.name = "张三"
console.log(obj)
每一个实例对象都有自己的__proto__属性指向创建自己的原型对象。
每个原型对象也有着自己的原型对象——object,object是所以对象的最终原型。
除了__proto__属性外还有个prototype属性,这个也是用来指向原型的,不过是给创建对象的引用类型使用的,指向自己
console.log(str.__proto__ === String.prototype)//true
而原型对象也可以使用一个叫做constructor属性找到创建自己孩子的对象
console.log(str.constructor === String)//true
js new一个对象的过程
function mon(name) {
this.name = name
}
var son = new mon()
1、创建一个新对象:son
2、新对象会执行一个[[prototype]]连接
son.__proto__=mon.prototype
3、对象实例和对象的this会绑定起来
4、执行对象中的代码
this.name = name
5、如果函数没有返回值,就是返回新对象
什么是原型链
function supermarket() {
}
supermarket.prototype.product = "salks"
console.log(supermarket.prototype)
function shop() {}
shop.prototype = new supermarket()
console.log(shop.prototype)
var person = new shop()
console.log(person.product)
说明:我并没有在shop中定义product,按理说它应该为空,但是我让shop的原型对象指向supermarket的实例,它就会去supermarket中寻找有没有product属性。
作用:我们可以利用这特性实现类的继承
下一篇: 使用BufferedReader读入数据