js知识2

对象:
  1.有两种方式提供调用其他对象的方法:
    call

    apply


  2.获取具体类型的方式:
  var typeStr=Object.prototype.toString.call(想获取类型的对象);
  typeStr=typeStr.slice(8,-1);

  3.自定义构造函数:
    function Animal(name,type,barkWay){
this.name=name;
this.type=type;
this.barkWay=barkWay;
    }
    var dog=new Animal("jj","hh",function(){
console();
    });
    优化:为了处理函数方法中有相同的代码段 造成资源浪费,要让所有的函数公用一个函数。
          但是这种方法也有弊端,增加了全局变量,造成结构混乱。
  解决:用原型:
  原型:在创建构造方法的时候,系统会默认关联一个神秘对象,这个对象为原型。
        原型中的属性和方法可以被使用该构造函数创建出来的对象

          原型使用方法:1)利用原型的动态特性给原型对象添加成员
构造函数.prototype.方法名=function(){}
p.方法名();
    2)直接替换原型对象
                  构造函数.prototype={};

                            注意事项:

1.使用对象访问属性时,如果在本身内找不到就会去原型中查找但是使用点语法进行属性赋    值的时候,并不会去原型中查找

                           使用点语法进行属性赋值时,如果对象中不存在该属性,就会给该对象新增属性
    2.若原型中的属性是引用类型的属性,那么所有的对象共享该属性,并且一个对象修改了该    引用类型属性中的成员,其他对象也都会受影响
                        3.一般情况下不会将属性放到原型对象中, 一般情况下原型中只会放需要共享的方法
          4.在使用新的对象替换掉默认的原型对象之后
      原型对象中的constructor属性会变成 Object
      为了保证整个  构造函数---原型----对象 之间的关系的合理性
      应做如下操作:
      在替换原型对象的时候,在新的原型对象中手动添加 constructor 属性
       Person.prototype = {
                         constructor : Person
                        };
  
   4.对象:封装 继承(for  in)  多态(强类型有 弱类型没有)
     for in混入式继承:在for循环中,可以使用对象的属性和方法,也可以赋值。
     for(var k in obj1){
obj[k]=obj1[k] //不能使用点的方式
     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值