JavaScript高级(含ES6)-Day02 扩展内置对象 | ES5的新增方法

扩展内置对象的方法是通过原型对象

//给array增加求和方法
        console.log(Array.prototype);
        //1、添加方法,不影响本身
        Array.prototype.sum = function(){
            var sum = 0;
            for(var i =1;i<this.length;i++){
                sum += this[i]
            }
            return sum;
        }
        //2、会全部覆盖原来的
        // Array.prototype = {
        //     constructor:Array,
        //     sum:function(){
        //         var sum = 0;
        //         for(var i =1;i<this.length;i++){
        //             sum += this[i]
        //         }
        //         return sum;
        //     }
        // }
        console.log(Array.prototype);

        var arr1 = [122,324,435,345,54];
        console.log(arr1.sum());
call()

使用方法:father.call(son,arg1,arg2…);
作用:改变this指向;

		var oo = {
            name:"101"
        }
        function fn(x,y){
            console.log("我是在这的人");
            console.log(this);
            console.log(x+y)
        }

        // fn();
        // fn.call();
        // fn.call(oo);
		//如下,fn就的内容变成了oo的
        fn.call(oo,1,2)
组合继承

1.组合继承属性

		function Father(uname,age){
            this.uname = uname;
            this.age = age;
        }
        function Son(uname,age,score){
            Father.call(this,uname,age);
            this.score = score;
        }
        var son1 = new Son('cxk',22,750);
        console.log(son1)

2.组合继承方法

		function Father(uname,age){
            this.uname = uname;
            this.age = age;
        }
        Father.prototype.money = function(){
            console.log("继承了财产");
        }
        function Son(uname,age,score){
            Father.call(this,uname,age);
            this.score = score;
        }
        //错误方法,会导致son的原型链指向father,更改son的原型链实为修改father
        // Son.prototype = Father.prototype;
        //正确做法
        Son.prototype = new Father();
        //如果利用对象形式修改了原型对象,要记得利用constractor指回原来的原型对象
        Son.prototype.constractor = Son;
        Son.prototype.exam = function(){
            console.log('我要考试了');
        }
        var son1 = new Son('cxk',22,750);
        console.log(son1)
        console.log(Father.prototype)

ES5中新增的方法

  1. 数组方法

forEach() 遍历

        var arr = [1,2,3];
        var sum = 0;
        arr.forEach(function(value,index,array){
            console.log('每个数组元素:'+value);
            console.log('每个数组元素的索引号:'+index);
            console.log('数组本身:'+array);
            sum += value;
        })
        console.log(sum);

filter() 筛选数组(返回值为数组)

        var arr = [12,323,34];
        var newarr = arr.filter(function(value,index){
            // return value >= 20;
            return value >= 20;
        })
        console.log(newarr)

some() 判断数组(返回值为布尔值)

		var arr = [12,323,34];
        var flag = arr.some(function(value){
            // return value >= 20;
            return value < 2;
        })
        console.log(flag);

        var arr1 = ['red','pink','blue'];
        var flag1 = arr1.some(function(value){
            return value == 'pink';
        })
        console.log(flag1);
  1. 字符串方法

trim() 截掉空白字符

	<input type="text"> <button>点击</button>
    <div></div>
    
    <script>
        var str = '  andy    ';
        console.log(str);
        var str1 = str.trim();
        console.log(str1);
        
        var input = document.querySelector('input');
        var btn = document.querySelector('button');
        var div = document.querySelector('div');
        btn.onclick = function(){
            if(input.value == ''){
                alert('请输入内容');
            }else{
                console.log(input.value);
                console.log(input.value.length);
                div.innerHTML = input.value;
            }
        }
    </script>
  1. 对象方法

Object.keys(obj1) 获取对象obj1自身的所有属性名,返回值为数组类型

		var obj = {
            id:1,
            pName:'小米10',
            pPrice:3999,
            pDate:'2020-10-11'
        }
        var arr = Object.keys(obj);
        console.log(arr)

Object.defineProperty(obj1,prop,descriptor) 定义对象中的属性或修改原来的属性

		var obj = {
            id:1,
            pName:'iphone12',
            price:7999
        }
        //添加属性、修改属性值的方法
        //1、常规操作
        // obj.num = 1000;
        // obj.price = 8999;
        // console.log(obj);

        //2、使用对象方法
        Object.defineProperty(obj,'num',{
            value:2000,
            writable:false,//默认为false,是否可以重写
            enumerable:false,//默认是false,是否可以枚举,是否可以遍历
            configurable:false,//默认是false,是否可以被删除,不允许再修改这个属性的特性
        })
        Object.defineProperty(obj,'price',{
            value:2000
        })
        
        obj.num = 2;
        console.log(obj.num);
        delete obj.id;
        delete obj.num;
        console.log(obj)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值