发表于: 2019-03-09 22:56:50
1 649
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
构造函数
构造函数可以用来创建特定类型的对象,像Object Array这样的原生构造函数,在运行的时候会自动出现在执行环境中。另外,我们也可以创建自己的构造函数, 从而定义自定义的对象类型的属性和方法。
function Fish(name, color, food) {
this.name = name;
this.color = color;
this.food = food;
this.eat = function () {
alert(this.food);
};
}
var littleFish = new Fish('小鱼','五颜六色','小鱼吃虾米');
var bigFish = new Fish('大鱼','白色','大鱼吃小鱼');
littleFish.eat();
原型模式
我们创建的每一个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。prototype就是 通过调用构造函数而创建的那个对象实例的原型对象。使用原型对象的好处是让所有对象实例共享他的属性和方法。
function Fish() {
}
Fish.prototype.name = "大白鲨";
Fish.prototype.color = '白色';
Fish.prototype.food = '大白鲨吃其它鱼';
Fish.prototype.eat = function () {
alert(this.food);
};
var shark1 = new Fish();
var shark2 = new Fish();
// shark1.eat();
console.log(shark1.name);
console.log(shark2.name);
理解原型对象
不论什么时候,只要创建了一个新的函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。 在默认情况下,所有原型对象队徽自动获得一个constructor属性,这个属性指向prototype属性所在函数的指针。【看demo】
function Fish() {
}
Fish.prototype.name = "大白鲨";
Fish.prototype.color = '白色';
Fish.prototype.food = '大白鲨吃其它鱼';
Fish.prototype.eat = function () {
alert(this.food);
};
var shark1 = new Fish();
var shark2 = new Fish();
console.log(Fish);
console.log(Fish.prototype);
console.log(Fish.prototype.constructor);
创建自定义的构造函数后,其原型对象默认取得constructor属性,而其他方法则会继承自Object。当我们调用构造函数创建一个新的实例后,这个实例的内部将会包含一个指针,这个是内部属性。指向构造函数的原型对象。这个指针是[[prototype]]。这个属性还没有标准的方式访问。但是还是可以返回:Object.getPrototypeOf()方法可以返回[[prototype]
原型链
前面讲过原型链的基本实现就是将一个构造函数的实例赋值给另一个构造函数的原型。这样,这个函数的实例就会继承那构造函数的属性和方法。1.原型和原型链是JS实现继承的一种模型
明天计划的事情:(一定要写非常细致的内容)
继续任务
遇到的问题:(遇到什么困难,怎么解决的)
收获:(通过今天的学习,学到了什么知识)
如上
评论