美文网首页
一切都是对象

一切都是对象

作者: oyakuki | 来源:发表于2017-05-10 10:32 被阅读0次

    JAVASCRIPT中有一句著名的话—“一切皆对象”;理解这句话的关键在于怎么理解“对象”。
    当然,也不是所有都是对象,值类型就不是对象。
    js里面的值类型包含(数值、布尔值、null、undefined),引用类型有(对象,数组,函数)。
    如果我们不能确定一个变量的类型,通常会使用typeof操作符来获得它的类型

        console.log(typeof 123);          //number
        console.log(typeof "abc");        //string
        console.log(typeof true)          //boolean
        console.log(typeof null);         //object
        console.log(typeof undefined);    //undefined
        console.log(typeof [1,2,3,4]);    //object
        console.log(typeof {name:"jim"}); //object
        console.log(typeof function(){}); //function 
    

    通过上面的代码,我们可知(number,string,boolean,undefined)都是值类型,剩下的(null,array,function,object)等等都是引用类型

    那么对象到底是什么呢?
    对象——若干属性的集合。

    java或者C#中的对象都是new一个class出来的,而且里面有字段、属性、方法,规定的非常严格。但是javascript就比较随意了——数组是对象,函数是对象,对象还是对象。
    对象里面的一切都是属性,属性值可以是任意类型,如果属性值是函数的时候,我们就称这个属性为这个对象的方法
    对象里面都是键值对的表示形式,所以城对象是若干属性的集合。

            var person = {
                name:"oyakuki",
                age:20,
                say:function(){
                    console.log(this.name + "is saying")
                }
            }
    

    上面的代码可能非常好理解,那么函数和数组也可以这样定义属性吗?——当然不行,但是它可以用另一种形式,总之函数/数组之流,只要是对象,它就是属性的集合。

            var fn = function(){
                console.log(123);
            };
            fn.a = 10;
            fn.b = function(){
                console.log
            };
            fn.c = {
                name:"oyakuki",
                age:20
            };
    

    在上面的代码中,fn作为函数,被赋予了a,b,c三个属性,fn很明显就是属性的集合啊,就是一个对象;

    在jQuery源码中,“jQuery”或者“$”,这个变量其实是一个函数,不信你可以叫咱们的老朋友typeof验证一下。

    console.log(typeof $)  // function
    

    所以只要记住:一切引用类型都是对象,对象是若干属性的集合

    相关文章

      网友评论

          本文标题:一切都是对象

          本文链接:https://www.haomeiwen.com/subject/ippwtxtx.html