码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript构造函数 原型 原型链

时间:2017-03-30 00:11:33      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:ace   family   技术分享   pac   台湾   class   理解   问题   表示   

对象(object),台湾译作物件,是面向对象(Object Oriented)中的术语,既表示客观世界问题空间(Namespace)中的某个具体的事物,又表示软件系统解空间中的基本元素。

在软件系统中,对象具有唯一的标识符,对象包括属性(Properties)和方法(Methods),属性就是需要记忆的信息,方法就是对象能够提供的服务。在面向对象(Object Oriented)的软件中,对象(Object)是某一个类(Class)的实例(Instance)。 —— 维基百科

构造函数又叫工厂函数,也可以叫做类(个人理解),用来创建对象的函数,构造函数普通的函数的区别在于是否用new 调用,来看一个构造函数

function Person(name,age)
{
    this.name=name;
    this.age=age;
    this.say=function()
    {
        alert(this.name);
    }
}

分别在构造函数中定义了两个成员属性name和age,还有一个方法成员say()

此时可以通过new Person()来实例化一个对象

function Person(name,age)
        {
            this.name=name;
            this.age=age;
            this.say=function()
            {
                alert(this.name);
            }
        }
        var liming=new Person("liming",23);
        console.log(liming.age);
        console.log(liming.age);

liming就是实例化后的对象 

 

原型 即prototype  每个函数都有一个prototype属性  ,这个prototype的属性值是一个对象(属性的集合),prototype对象默认的有个constructor属性指向这个函数本身

技术分享

你也可以在自己定义的构造函数的prototype中定义自己的属性

每个函数都有prototype属性,每个对象都有_proto_属性,构造函数只有prototype,而他实例化出来的对象则只有_proto_属性

这个属性引用了创建这个对象的函数的prototype,即liming.__proto__===Person.prototype;

obj.__proto__和Object.prototype的属性一样!obj这个对象本质上是被Object函数创建的,因此obj.__proto__=== Object.prototype。

Object.prototype确实一个特例——它的__proto__指向的是null,切记切记!

我们把这个有__proto__串起来的直到Object.prototype.__proto__为null的链叫做原型链。

 

JavaScript构造函数 原型 原型链

标签:ace   family   技术分享   pac   台湾   class   理解   问题   表示   

原文地址:http://www.cnblogs.com/liuxuhtml/p/6642429.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!