zoukankan      html  css  js  c++  java
  • 构造函数基础

    1, 构造函数模式:用函数封装来创建对象

     1 // 工厂模式 这种创造了很多function
     2     function createPerson(name, age, job){
     3         var o = new Object();
     4         o.name = name;
     5         o.age = age;
     6         o.job = job;
     7         o.sayName = function(){
     8             console.log(this.name);
     9         }
    10         return o;
    11     }
    12 
    13     var person1 = createPerson("Nick", 89, "SDE");
    14     person1.sayName();
    15     var person2 = createPerson("Devil", 189, "SDE");
    16     person2.sayName();

    2. 构造函数模式(执行了4个步骤:隐式创造对象,将构造函数的作用域赋值给新对象,执行构造函数的代码,在返回新对象)

     1 // constructor  隐式得创造了对象,将构造函数的作用域赋值给新对象,执行构造函数中的代码, 然后再返回了此对象============================
     2     function Person(name, age){
     3         this.name = name;
     4         this.age = age;
     5     }
     6     Person.prototype.sayName = function(){
     7         console.log(this.name);
     8     }
     9 
    10     var p1 = new Person("zhaoxi" , 22);
    11     p1.sayName();
    12 
    13     console.log(p1.constructor);

    3. 原型链模式

        实例.constructor = 构造函数;

        构造函数.prototype.constructor = 构造函数;(有例外)

        实例的指针始终是指向构造函数的原型链的,而不是构造函数本身。那么实例是如何同时继承两边的属性呢?从上面第二条可以知道啦。

     1 // 
     2     function Car(){
     3     
     4     }
     5 
     6     var car1 = new Car();
     7     console.log(car1.constructor); // Car(){}
     8     console.log(Car.prototype.constructor); // Car
     9 
    10     function Bird(){}
    11     Bird.prototype = {    // 这里重写了原型对象,已经不是原来的啦
    12         name : "xian",
    13         sayName : function(){
    14             console.log(this.name);
    15         }
    16     };
    17     var bird1 = new Bird();
    18     console.log(bird1.constructor);// Object()
    19     console.log(Bird.prototype.constructor); // Object
    疯癫不成狂,有酒勿可尝;世间良辰美,终成水墨白。
  • 相关阅读:
    由“Jasperrpeorts 4.1.2升级到5.1.2对flex项目的解析”到AS3 带命名空间的XML的操作
    c++里的类型转化
    A股市场暴跌背后的三大元凶?
    jQuery简单过滤选择器
    Handling of asynchronous events---reference
    NMAP
    JVM Run-Time Data Areas--reference
    Getting over the dangers of rm command in Linux---reference
    45 Useful Oracle Queries--ref
    手动修改user-agent
  • 原文地址:https://www.cnblogs.com/chuyu/p/3368679.html
Copyright © 2011-2022 走看看