我们现在创建一个Student构造函数
function Student(name, age) {
this.name = name;
this.age = age;
}
注意:方法不推荐直接创建在构造函数中,应该在构造的原型对象中设置
/*Student.prototype.sayHi = function () {
console.log('你好, 我是' + this.name);
}
Student.prototype.sayHello = function () {
console.log('大家好, 我是' + this.name);
}*/
以上我们利用原型对象创建了两个方法,但是上面这个写法我们推荐
因为如果要创建的方法很多,就显得不够简洁,下面是推荐的写法
// 因为Student.prototype也是一个对象
Student.prototype = {
constructor: Student, //重新设置constructor
sayHi: function () {
console.log('你好, 我是' + this.name);
},
sayHello: function () {
console.log('大家好, 我是' + this.name);
}
}
1、注意:使用这种方式,我们需要重新设置constructor属性
var stu = new Student('hq', 22);
stu.sayHi();
stu.sayHello();
扩展内置对象的方法
我们知道数组对象中有很多的关于数组的方法,但是现在我们想增加一个计算一组数偶数的和的方法
// 利用原型对象添加方法
Array.prototype.getOddSum = function () {
var sum = 0;//计算和
// this表示调用这个方法的对象
for (var i=0; i<this.length; i++) {
if (this[i] % 2 === 0) {
sum += this[i];
}
}
return sum;
}
2、注意:我们给内置对象增加方法只能使用上述方式去增加,比如
如果上面使用Array.prototype = {}的方式增加,那么内置对象之前的内容都被覆盖了(而且系统也不允许这样操作)
var arr = [2,4,3,1,5];
console.log(arr.getOddSum());
网友评论