javascript 原型和闭包第n次忘光再学

工作很久了,但是对原型闭包什么的还是记不住,原因呢,就是在开发的时候,根本用不上这么高大上的东东.所以今天趁着还理解,写个笔记,下次忘了的时候快点拿起来.

[参考资料] http://www.cnblogs.com/wangfupeng1988/p/3977924.html

javascript类型

  • js类型
    • 值类型
      • number
      • string
      • boolean
      • undefined
    • 引用类型
      • object (函数, 数组, 对象, null)

使用typeof函数就可以输出

    function test(type) {
        /** 值类型 **/
        console.log(typeof(type)); //undefinde
        console.log(typeof(1)); //number
        console.log(typeof("123")); //string
        console.log(typeof(true)); //boolean

        /** 引用类型 **/
        var func = function(){};
        console.log(typeof(func)); // function

        var arr = new Array();
        console.log(typeof(arr)); // object

        var obj = {};
        console.log(typeof(obj)); //object

        console.log(null); //object
    }
    test();

值类型的类型判断用typeof,引用类型的类型判断用instanceof

对象包含属性和方法

对象里的一切都是属性,方法也是属性.
就像人体内部都是器官一样,只是功能不同,结构不同.但是为了方便我们认知学习,给他们统一分配到一起成为一个类别.

    var obj = {
        name: "object",
        sex: null,
        func1: function() {
            console.log("run func1");
        },
        func2: function(arg) {
            console.log("run %s now", arg);
        }
    }

    obj.name //"object"
    obj.func1(); //run func1
    obj.func2("obj"); //run obj now

对象都是通过函数创建的

证据:

    console.log(typeof(Object)); // function
    var obj = {a:100, b:100}; //这是语法糖的形式,函数创建对象
    //等同于:
    var obj = new Object();
    obj.a = 100;
    obj.b = 100;

函数是对象,对象又是函数创建的,万恶的null.

每个函数都有prototype属性,就是原型.
prototype是一个对象,里面包含默认的constructor属性,指向函数本身.

    function obj(){};
    obj.prototype = { //Object
        constructor:function obj(),
        __proto__:Object //隐藏属性
    }

每个对象都有一个隐式原型_ _proto_ ,这个属性引用了创建这个对象的函数的prototype,对象都是被Object函数创建的,所以obj. _ proto _ _ === Object.prototype

Object.prototype

  • obj

    • (函数) -> prototype //prototype是对象
      • (对象) -> _ _ proto _ _
        +(对象) -> _ _ proto _ _

    -_-!! 这就是为什么可以在chrome 终端一直点下去的原因.

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值