一切都是对象

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容