JS高级

##面向对象的特征
一.封装(隐藏实现细节的过程)
    好处:重用 隐藏细节
    访问器:get(获取值)
    修改器:set(设值)
    例:Object.defineProperty(Student.prototype,"name"){
            set:function(name){
                    _name=name;
                               },
            get:function(){
                    return _name;
                           }
                                                        });
二.this:普通函数调用得到的是全局对象,在对象中,指向的是当前对象
**改变this指向**
    1.在调用函数后加bind
        例:function func(){
                    console.log("func:",this);
                           };
                    func.bind({name(this指向的对象):'change this'})()
    2.call/apply
        func.call({name:'change this'},100,200); 采用参数列表
        func.apply({name:'change this'},[100,200]); 通过数组传参
    3.箭头函数
        例:let obj={
                show:function(){
                        console.log("show",this);
                        (()=>{
                          console.log("inner show:",this);
                              })()
                                }
                    }
三.继承(通过子类沿用父类的属性、方法来达到重用性;子类可以有自己的属性、方法达到扩展型)
    1.继承只有单根继承
    2.有三种方法继承:
      对象冒充发(属性传递属性)
      原型链(继承方法)
      混合方式:采用前两种方式的混合方式
    3.prototype只能通过构造函数访问,可以改变原型
      _proto_属性可以通过对象访问属性,但不能改变属性



    

猜你喜欢

转载自www.cnblogs.com/lyczzc/p/9163775.html