tips:

JavaScript 除了null和undefined之外,其他变量都可以当做对象使用。

JavaScript 的基本数据类型有:number boolean string null  undefined ,其他所有值都是对象。

JavaScript 的 typeof 只能判断 number boolean string undefined function object 不能判断一些具体的对象类型和null。

如果要判断对象的具体类型则要使用  Object.prototype.toString.apply(aaa) === "[Object Array]" 来判断,或者根据该对象的特有性质判断,如Array对象有一个特殊属性length。

JavaScript 的顶层函数(对象),Array,RegExp,Date,String,Object,Function等有prototype属性。

Array , RegExp ,Date ,String,  Function 都会继承 Object.prototype中的属性和方法。而Object.prototype.__proto__ 为null。

JavaScript 的对象创建:

1.由构造函数创建的对象继承自创建该对象的构造函数的prototype

1.1   var a = new Object(obj);

对象 a 会对对象obj进行浅复制,即对象a可以引用对象 obj 中的方法和属性,但是a的原型继承指向的是 Object.prototype。此外,对象a可以修改对象 obj中的属性和方法。

1.2   var a  = Object.create(obj);

对象a的原型继承指向obj,a可以引用obj对象中定义的属性和方法,但是不能对obj中的属性和方法进行修改,当a对obj中的属性和方法赋值时,相当于在对象a中定义属性和方法。

1.3 var FF = function(){}; var a = new FF();

此时对象a的原型继承指向 FF的prototype.

2.由对象字面量创建的对象

2.1  var a = [];

对象a 继承自 Array.ptototype

2.2  var a ={};

对象a指向 Object.prototype.

总结:所有的对象都有隐藏的__proto__属性,所有的函数都有__proto__之外,还有一个prototype对象属性。

JavaScript 对象创建的更多相关文章

  1. 【JavaScript学习】JavaScript对象创建

    1.最简单的方法,创建一个对象,然后添加属性 var person = new Object(); person.age = 23; person.name = "David"; ...

  2. 深入JavaScript对象创建的细节

    最近深入学习javascript后,有个体会:面向对象的方式编程才是高效灵活的编程,也是现在唯一可以让代码更加健壮的编程方式.如果我们抛开那些玄乎的抽象出类等等思想,我自己对面向对象的从写程序的角度理 ...

  3. JavaScript对象创建的几种方式

    1 工厂模式 1.1 创建 function createFruit(name,colors) { var o = new Object(); o.name = name; o.colors = co ...

  4. Javascript 对象创建多种方式 原型链

    一.对象创建 1.new Object 方式 直接赋上属性和方法 var obj = new Object(); obj.name = '娃娃'; obj.showName = function(){ ...

  5. Javascript对象创建

    一.概述 虽然对象字面量可以用来创建对象,但在创建多个类似的对象时,不够优雅,不符合DRY原则. 二.创建对象 有以下几种模式: 1.工厂模式 2.构造函数模式 3.原型模式 4.组合构造函数和原型模 ...

  6. JavaScript对象创建,继承

    创建对象 在JS中创建对象有很多方式,第一种: var obj = new Object(); 第二种方式: var obj1 = {};//对象直面量 第三种方式:工厂模式 function Per ...

  7. javascript对象创建方式

    工厂模式 在ECMAscript中无法创建类,所以开发人员就发明了一种函数,用函数来封装,以特定接口创建对象的细节,如下面的例子所示: function createPerson(name,age,j ...

  8. JavaScript—对象创建方式

    JavaScript 也是面向对象的语言(oop) 之前学JavaScript 没有学对象.现在做下笔记 创建对象的方式: 1.  对象字面量 const hero = { name: '吕布', w ...

  9. [JavaScript]对象创建方法

    1.使用Object或对象字面量创建对象 (1)使用Object创建对象 var cat= new Object(); cat.name = "Tom"; cat.color= & ...

随机推荐

  1. mysql 并发下数据不一致的问题分析及解决

    MySQL 5.6 , InnoDB存储引擎,默认事务隔离级别(REPEATABLE-READ) 初始sql 脚本如下: CREATE DEFINER=`root`@`localhost` PROCE ...

  2. redhat 7 配置yum本地源

    http://www.unixarena.com/2015/04/how-to-create-the-yum-repository-on-rhel-7.html   1. 在虚拟机上挂上cd 2. m ...

  3. bzoj3172 Ac自动机

    根据fail树的性质 我们在建树的时候每建一个串就将他路径上的点全部加1表示这个串的后缀又出现了一次 然后从下到上把sum加起来就可以得到答案了 #include<cstdio> #inc ...

  4. bzoj 3207 可持久化线段树

    首先因为固定询问长度,所以我们可以将整个长度为n的数列hash成长度为n-k+1的数列,每次询问的序列也hash成一个数,然后询问这个数是不是在某个区间中出现过,这样我们可以根据初始数列的权值建立可持 ...

  5. Call Mode feature

    起源 user 在插著 充電器 打電話的狀況下, 為了安全起見, 避免 充電器在這時損害手機,間接造成 user 的傷害, 而有了這 feature, 在 battery voltage Vbat & ...

  6. java===java习题---Josephu问题

    package testbotoo; /** * * @author */ public class Demo4 { public static void main(String[] args) { ...

  7. Linux kernel suspend resume学习:2.6.35与3.0.35比较【转】

    转自:http://blog.csdn.net/njuitjf/article/details/18317149 Linux kernel suspend resume学习:2.6.35与3.0.35 ...

  8. 64_l6

    lightdm-qt5-devel-1.22.0-1.fc26.i686.rpm 19-May-2017 11:11 22854 lightdm-qt5-devel-1.22.0-1.fc26.x86 ...

  9. 压缩LDF档

    --压缩LDF档 USE VoucherServer; GO -- Truncate the log by changing the database recovery model to SIMPLE ...

  10. java 和 JVM

    C++和Java的区别 指针:java中不存在指针的概念,编程者无法直接通过指针来直接访问内存,有利于维护java程序的安全 多重继承:C++支持多重继承,java不支持多重继承,但是允许一个类继承多 ...