JS函数浅析之constructor、prototype属性

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 05:43 点击:

函数是JS里很神奇的一位童鞋。那么如何创建一个函数呢?简单来说有下面几种形式:
    1、定义式
    function a() {}
    2、声明式
    var a = function() {}; // 把一个匿名函数赋给一个变量
    3、构造函数
    var a = new Function(); // 用Function来实例化一个对象

    函数有什么用呢?封装,重用,对吧,把一些动作封装起来,让其他童鞋可以重复调用【使用()操作符即可】。
    函数按照功能分,可以分为:
    1、普通函数;
        普通函数就是一般方法的封装跟重用,如上面的a;
    2、构造函数;
        构造函数用来实例化一个对象,像是一道菜谱,按照这个菜谱炒了一盘菜;定义构造函数,有个不成文的规定,就是函数名大写,如:var A = function() {};
    3、对象方法;
        用来定义一个对象的方法,比如一个Person对象var Person = {};需要定义一个getName方法,如:Person.getName = function() {};

    函数之constructor
    每个函数都有一个constructor属性,这个属性指向创建自己的函数;如上文中的a函数,他的constructor指向谁呢?谁创建它指向谁呗?那是谁创建的呢?在firebug等控制台上输入a.constructor,显示Function()。为什么是Function呢?其实,无论用上面的哪种形式创建函数,在后台都会使用new Function()形式创建。那Function的constructor指向谁呢?很意外,还是Function?为什么?由于Function是ECMAScript规定的本地对象,独立于宿主环境,这说明只要打开宿主环境(如:浏览器)这个Function就可以用了。

    函数之prototype
    跟constructor一样,prototype也是每个函数默认就具有的属性,这个属性指向prototype对象,而prototype里面居然也有一个constructor属性,指向了这个函数。

    构造函数
    构造函数可以实例化一个对象:如:var Person = function() {}; var p = new Person(); 这个p就是通过Person创建的,那么它的constrctor指向了Person,而其内部还有个__proto__属性,在firefox、chrome等浏览器下可以直接访问这个属性,这个属性指向了prototype对象。

    实例、原型、构造函数 之间的关系
    实例是通过构造函数创建,但是跟构造函数没有直接关系,其内部的__proto__属性指向了prototype,而prototype(原型)的constructor指向了构造函数,构造函数的prototype属性指向了原型(prototype),所以说实例跟构造函数都是通过prototype发生了关系。。。。

作者“冯尚实的博客”

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Gb2312转utf-8编码的方法(vbs+js)
      • 如何使用Ajax技术开发Web应用程序(1)
      • js跳转路径问题
      • JavaScript模仿桌面窗口
      • 用js检测两个线段是否相交
      • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
      • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
      • 我是如何去了解jquery的(六),案例之幻灯片轮换
      • Jquery封装幻灯片效果
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1