构造函数和原型

构造函数和原型

[TOC]


1.构造函数和原型

1.1 对象的三种创建方式

字面量方式

    var obj = {}

new 关键字

    var obj = new Object()

构造函数方式

    function Star(name,age) {
        this.name = name;
        this.age = age;
    }
    var obj = new Star('zz',12)

1.2 构造函数

构造函数 是一种 特殊的函数,主要用来初始化 对象,为对象成员变量赋初始值,与 new 一起使用 我们可以把对象中的一些公共属性和方法抽取出来,封装到函数里面

在JS中,使用构造函数时候需要注意:

  1. 构造函数用于创建某一类对象,首字母 大写
  2. 构造函数要和 new 一起使用
1.2.1 new在执行时会做的四件事情
  1. 在内存中创建一个新的空对象
  2. 让 this 指向这个新的对象
  3. 执行构造函数里面的代码,给这个新对象添加属性和方法
  4. 返回这个新对象 (所以构造函数里面不需要return)
1.2.2 静态成员和实例成员

实例成员就是构造函数内部通过this添加的成员 如下列代码中uname age sing 就是实例成员,实例成员只能通过实例化的对象来访问

 function Star(uname, age) {
     this.uname = uname;
     this.age = age;
     this.sing = function() {
     console.log('我会唱歌');
    }
}
var ldh = new Star('刘德华', 18);
console.log(ldh.uname);//实例成员只能通过实例化的对象来访问

静态成员 在构造函数本身上添加的成员 如下列代码中 sex 就是静态成员,静态成员只能通过构造函数来访问

 function Star(uname, age) {
     this.uname = uname;
     this.age = age;
     // 这种定义方法 如果有多个实例,会在内存里开辟例外的空间; 很耗内存
     this.sing = function() {
     console.log('我会唱歌');
    }
}
Star.sex = '男';
var ldh = new Star('刘德华', 18);
console.log(Star.sex);//静态成员只能通过构造函数来访问

1.3 构造函数原型prototype

构造函数 通过原型分配的函数 是所有对象所 共享的

js 规定,每一个构造函数都有个一个 prototyoe 属性 ,指向另一个对象;

prototype就是一个对象,这个对象的所有属性和方法,都被构造函数所拥有的

我们可以把那些不变的方法,直接定义到prototype 对象上面, 这样所有的实例就可以共享这些方法

  1. 原型是什么? 一个对象,我们称 prototype 为 原型对象
  2. 原型的作用是什么? 共享方法,比较节约我们的内存资源,就不要重新开辟内存空间
2-构造函数和原型
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里属于IT工程师。