1-3.3注意点

2019-03-04  本文已影响0人  大庆无疆
        我们现在创建一个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());
上一篇 下一篇

猜你喜欢

热点阅读