zoukankan      html  css  js  c++  java
  • 深入理解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三个属性。

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

  • 相关阅读:
    剖析并利用Visual Studio Code在Mac上编译、调试c#程序【转】
    算法题—百灯判熄
    聪明的情侣算法题
    C#中&与&&的区别
    C# 日期格式精确到毫秒 【转】
    C#关于窗体的keysdown事件,无法获取到焦点
    百度,迅雷,华为,阿里巴巴笔试面试
    对 Linux 新手非常有用的 20 个命令
    阿里面试题2015
    Ant工具 ant的安装与配置 ant作用
  • 原文地址:https://www.cnblogs.com/endlessmy/p/8547953.html
Copyright © 2011-2022 走看看