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三个属性。

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

  • 相关阅读:
    Lucene.Net 2.3.1开发介绍 —— 二、分词(一)
    控制‘控制台应用程序’的关闭操作
    详解for循环(各种用法)
    敏捷软件开发
    Sql Server的一些知识点
    在SharePoint 2010 中配置Remote Blob Storage FILESTREAM Provider
    使用LotusScript操作Lotus Notes RTF域
    JOpt Simple 4.5 发布,命令行解析器
    John the Ripper 1.8.0 发布,密码破解工具
    PacketFence ZEN 4.0.1 发布,网络接入控制
  • 原文地址:https://www.cnblogs.com/endlessmy/p/8547953.html
Copyright © 2011-2022 走看看