• 深入理解Javascript原型和闭包(1)——一切都是对象


    “一切都是对象”这句话的重点在于如何去理解“对象”这个概念。

    当然,也不是所有的都是对象,值类型就不是对象。

    JS中一个常用的操作符——typeof用来判断数据类型

     1 function show(x) {
     2 
     3             console.log(typeof x);    // undefined
     4             console.log(typeof 10);   // number
     5             console.log(typeof 'abc'); // string
     6             console.log(typeof true);  // boolean
     7 
     8             console.log(typeof function () {});  //function
     9 
    10             console.log(typeof [1, 'a', true]);  //object
    11             console.log(typeof { a: 10, b: 20 });  //object
    12             console.log(typeof null);  //object
    13             console.log(typeof new Number(10));  //object
    14         }
    15         show();

    从以上代码可以看出,undefined、number、string、boolean、null属于简单的值类型,不是对象剩下的几种情况——function、array、object都是对象,他们都是引用类型。

    判断一个变量是不是对象很简单。值类型的判断用typeof,引用类型的判断用instanceof。

    1 var fn = function () { };
    2 console.log(fn instanceof Object);  // true

    对象——若干属性的集合

    JS里面数组是对象,函数是对象,对象还是对象。对象里面的一切都是属性,只有属性,没有方法。那对象里的方法如何表示呢?方法也是一种属性,因为它的属性表示为键值对的形式。

    同时,js里的对象可以任意的扩展属性,没有class的约束。

    上面代码中,obj是一个自定义的对象,其中a,b,c就是他的属性,而且c的属性值还是一个对象,它又有name、year两个属性。

    但函数跟数组不是这样定义属性的,以函数为例:

     1         var fn = function () {
     2             alert(100);
     3         };
     4         fn.a = 10;
     5         fn.b = function () {
     6             alert(123);
     7         };
     8         fn.c = {
     9             name: "王福朋",
    10             year: 1988
    11         };

    上面代码中,函数作为对象呗赋值了a,b,c三个属性。

    一切引用类型都是对象,对象是属性的集合

  • 相关阅读:
    CentOS6.5安装Tab增强版:bash-completion
    005_linux下logrotate 配置和理解
    ITIL与ITSM的联系与区别
    C++----练习--bool类型作为特别的int要区别对待
    C++----练习--while求和
    C++----练习
    mysql----二进制包安装
    linux----ulimit 限制
    python----特性003
    python----特性002
  • 原文地址:https://www.cnblogs.com/endlessmy/p/8547953.html
Copyright © 2020-2023  润新知