// 原型
// 函数的prototype属性是一个对象
// 为什么构造函数的对象会继承自构造函数的prototype属性呢?
// 因为在构造函数new 的时候, 构造函数第一部会隐式的在内部声明一个
// this的对象, 对象的内部会有一个__proto__的属性,他指向的是构造函数
// 的prototype对象
// 通俗的说就是 __proto__的指向就是我们的构造函数对象需要继承的原型
Car.prototype.lang = '4900';
function Car(name) {
// 隐式操作,浏览器的内部
// var this = {__proto__: Car.prototype}
this.name = name;
// return this
}
var car = new Car('BMW');
console.log(car.lang, '继承自原型');
// 练习题:
Car.prototype.lang = '4900';
function Car(name) {
// var this = {__proto__: Car.prototype}
this.name = name;
}
var car = new Car('BMW');
Car.prototype = {lang: '5000'};
console.log(car.lang); // 4900
/**
* 首先 new 构造函数, 内部创建了this,定义了__proto__的指向是Car.prototype
* 然后Car.prototype={lang:5000}改变了指向,但是我们的对象继承是__proto__指向
* 的对象并没有更换指向,还是以前的那个房间指向
*/
Car.prototype.lang = '4900';
function Car(name) {
// var this = {__proto__: Car.prototype}
this.name = name;
}
Car.prototype = {lang: '5000'};
var car = new Car('BMW');
console.log(car.lang); // 5000
/**
* 首先将这个Car.prototype的房间指向改变成{lang: 5000}
* 然后声明了new,这个时候内部生成了this隐式的指向,变成了改变地址之后
* 的对象
* **/
console