创建对象 --- 构造函数模式

Posted 山水如画

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建对象 --- 构造函数模式相关的知识,希望对你有一定的参考价值。

ECMAScript中的构造函数可以用来创造特定类型的对象,Object和Array 是原生构造函数,在 运行时会自动出现在执行环境。也可以自定义构造函数,示例如下:

function Person(name,age,job){      
            this.name = name;
            this.age = age;
            this.job = job;
            this.sayName = function(){
                  alert(this.name);
            };   
}
var person1 = new Person("wsc",25,"software Engineer");
var person2 = new Person("yl",26,"Doctor");

注意:按照惯例,构造函数始终都应该以一个大写字母开头,而非构造函数则应该以一个小写字母开头,目的是区别ECMAScript中的其他函数,因为构造函数也是函数,只是配用来创建对象;

(1).创建Person新实例,必须使用new操纵符。这种方式调用构造函数实际上经历一下4个步骤:
  1.创建一个新对象;

  2.将构造函数的作用域赋给新对象;

  3.执行构造函数中的代码;

  4.返回新对象;

(2).构造函数都有一个构造函数属性constructor,该属性指向该对象所属的实例,以前面的例子为准:

  alert(person1.constructor == Person);//true

  1.对象的constructor属性主要目的是用来标识对象类型;

  2.检测对象类型主要是用instanceof,示例如下:
    alert(person1 instanceof Object);//true   注意:所有的对象均继承Object
    alert(person1 instanceof Person);//true

  3.创建自定义构造函数意味着将来可以将它的实力标识为一种特定的类型,这是构造模式胜过工厂模式的地方,

  注意:以这种方式的构造函数是定义在Global对象中的;

(3).构造函数与其他函数的唯一区别是调用方式的不同:任何函数只要通过new操作符来调用,那么它就作为构造函数;任何函数如果不通过new操作符来调用,那么它就作为普通函数;

// 当作构造函数
var person = new Person("wsc",26,"Software Engineer");
person.sayName();//"wsc";

//普通函数
Person("wsc",26,"Software Engineer");//添加到window
window.sayName()//"wsc"

//在另一个对象的作用域中调用
var o = new Object();
Person.call(o,"wsc",26,"Software Engineer");
o.sayName();//"wsc"

 

以上是关于创建对象 --- 构造函数模式的主要内容,如果未能解决你的问题,请参考以下文章

面向对象的程序设计 - 创建对象

JavaScript之面向对象学习七(动态原型模式和寄生构造函数模式创建自定义类型)

JavaScript创建对象之单例工厂构造函数模式

Javascript-基础-Object创建对象

JavaScript高级 对象创建模式 object 对象字面量 工厂模式 自定义构造函数 构造函数+原型

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段