首先我们先定义一个空对象作为演示。
let obj={};
obj.render();
此时如果我们想使用obj对象下的render方法,那么系统就会自动从obj对象中寻找这个方法,如果obj对象中找不到这个方法,那么他就会去原型中寻找obj的父级,如果obj的父级也没有这个方法,系统就会报错。
那么此时我们向原型中添加一个render方法,然后打印看看obj这个对象。
let obj = {};
obj.__proto__.render = function () {
console.log("我是Joker")
};
obj.render();
console.log(obj);
此时我们就能从原型中看到我们新添加的这个方法。
当我们从obj中调用render这个方法,系统会先找obj对象下有没有这个方法,如果没有再去原型中找,因此我们也能顺利的打印调用出render方法。
那么当我们的obj对象下和原型对象下同时拥有render这个方法的时候,系统会默认先从obj对象下查找,找到了就不需要再去原型中找了。
let obj = {
render() {
console.log("我是obj下的Joker")
}
};
obj.__proto__.render = function () {
console.log("我原型下的Joker")
};
obj.render();
console.log(obj);
因此这里打印的就是obj对象下的render方法。