美文网首页
搞“对象”从来都不简单

搞“对象”从来都不简单

作者: 达摩会武术 | 来源:发表于2019-01-03 17:01 被阅读0次
1-- 首先对象的两种创建模式,这个两种哈,一种字面量,一种new obj,打死你你也不能忘,要不然单身一辈子。
第一种:
   var qi=new Object();
第二种:
  var qi1={}....
2-- 对象的创建分为很多种模式,正如找对象的方法有很一样。
3-- 工厂模式: 可以无数次的调用这个函数,每次返回一个包含这4个属性的对象。 工厂模式解决了多个相似对象的问题,但是却没有解决对象识别的问题(即怎样知道一个对象的类型,例如Array,Date等等)。
工厂模式:
 function createObject(name,love,age,words){
    var o = new Object();
    o.name=name;
    o.age=age;
    o.love=love;
    o.words=words;
    o.say=function(){
      console.log(this.words);
}
}
4-- 构造函数模式:可以用来创建特定类型的对象。
构造函数模式:
 function createObject1(name,love,age,words){
    this.name=name;
    this.age=age;
    this.love=love;
    this.words=words;
    this.say=function(){
      console.log(this.words);
}
}

构造函数的创建新对象的过程:创建一个新对象 => 将构造函数的作用于给新对象(因此this就指向了这个新对象) => 执行构造函数中的代码(为这个新对象添加属性) => 返回这个新对象。

构造函数的问题: 每个方法都要在每个实例上重新创建一遍。

5--原型模式:原型模式的好处就是让所有对象实例共享他所包含的属性和方法--share~︿( ̄︶ ̄)︿!
原型模式:
 function Co2(){
};
  Co2.prototype.name="gg";
  Co2.prototype.love="basketball";
  Co2.prototype.age=27;
  Co2.prototype.words="life is beautiful~!"
  var G1=new Co2();

原型对象的理解:只要创建了一个函数,就会有一个prototype的属性指向这个函数的原型对象。 所有的原型对象都有一个constructor属性---是一个指向prototype所在的那个函数的指针。
实例中创建的和原型中同名的属性,实例的属性会将原型中的同名属性屏蔽掉。

5-1引申!!重写对象的原型:需要注意的是重写整个原型和在原型上添加方法是不一样的!
原型被字面量对象重写:
    function Co3(){};
    Co3.prototype={
      name : "gg",
      love : "basketball",
      age : 27,
      words : "life is beautiful~!"
};
    var G2=new Co3();

上面的代码中我们将函数Co3的原型用字面量对象重写了,结果和上面的原型模式相同,但是constructor的指向不再是Co3,而是object,因为原型对象是通过字面量对象进行重写的;字面量对象哪来的,object造出来的呗,所以重写后的constructor被修改指向了object对象。

6-- 构造函数和原型的组合模式:构造函数用来定义实例属性,而原型用来定义共享的方法和属性。
构造函数和原型组合模式:
    function Co4(name,love,age){
      this. name=name;
      this.love=love;
      this.age=age; 
};
    Co4.prototype={
     constructor : Co4,  
      saywords : "life is beautiful~!"
};
    var G2=new Co4("kirk","sprots",27);
7-- 动态原型模式:通过检查某个应该存在的方法是否有效,来决定是否需要初始化原型。
        function Person(name, age, job){
        
            //properties
            this.name = name;
            this.age = age;
            this.job = job;
            
            //methods方法
            if (typeof this.sayName != "function"){
            
                Person.prototype.sayName = function(){
                    alert(this.name);
                };
                
            }
        }

        var friend = new Person("Nicholas", 29, "Software Engineer");
        friend.sayName();

只有在sayname方法不存在得情况下,才会将他添加到原型中。这里对于原型的修改可以立即在所有实例中得到反映。

相关文章

  • 搞“对象”从来都不简单

    1-- 首先对象的两种创建模式,这个两种哈,一种字面量,一种new obj,打死你你也不能忘,要不然单身一辈子。 ...

  • 简单,从来都不简单

    我是一个很懒散的人,却有一颗好胜的心,每天都在是否要积极向上这件事上摇摆,身体里就像有个小天使和小恶魔,不...

  • 生活从来都不简单

    你希望能有多一点陪伴,我想要多一点理解,你在乎现在的感受,我想我应该考虑未来,无关对错,也并非一成不变,不能为对方...

  • 爱,从来都不简单

    爱情,什么叫做爱情? 坦白点说,大概两个人在谈着恋爱,那就是爱情吧! 那,什么是真正的爱情? 我想应该就是,山盟海...

  • 生活,从来都不简单

    因为疫情影响,我们一家三口在湖南娘家一住就是二十几天。这么多年,一家人从来没有经历过这么长时间的假期。我们三口加...

  • 爱,从来都不简单

    武志红在《自我的诞生》一书中说:“爱,从来都不简单,不可能一蹴而就”。这里的爱,指的是父母对孩子的爱。 武志红认为...

  • 摘抄簿(一)爱伦·坡惊悚短篇分享 Tales of Myster

    这几天作业有点多,今天给自己放下假,搞个简单的摘抄簿(虽然我的凑字数行为从来都不简单)今天选了2个摘抄自爱伦坡惊悚...

  • 复盘,从来都不简单

    这次是第二次参加小鹿的“7天玩转周复盘”打卡课程,有了第一期课程的经验,第二次课程可以说是更进一步的学习、总结! ...

  • 爱啊,从来都不简单

    我这个人真的特别无趣的… 很喜欢很喜欢某个东西会在某一天突然就失去了全部兴致。随手撂挑子,也随处寻找着下一个刺激点...

  • 写文章从来都不简单

    大学刚毕业,来到一个农村电商创业公司运营公司公众号,从而正式开启了自己的职业生涯。 曾经以为运营一个微信公众号并不...

网友评论

      本文标题:搞“对象”从来都不简单

      本文链接:https://www.haomeiwen.com/subject/maxfrqtx.html