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. ReaderWriterLockSlim 类

    今天在看Nop源码时,PluginManager中用到了ReaderWriterLockSlim类,于是简单做个笔记. ReaderWriterLockSlim 表示用于管理资源访问的锁定状态,可实现 ...

  2. 汕头市队赛SRM 20 T2不净的圣杯

    不净的圣杯 SRM 20 背景 作为一张BUG级别的卡,官方打算把它修改得人畜无害一些…… 虽然名字还没想好,但是能力大概是对敌方所有单位造成d点伤害,d为自己牌组中所有卡的编号的最大公约数.这无疑是 ...

  3. 【NOIP】提高组2012 vigenere密码

    [算法]模拟 #include<cstdio> #include<cstring> ; char sm[maxm],key[maxm],s[maxm]; int len,len ...

  4. 快速搭建 DNS 服务器: skydns + etcd

    参考: [ skynetservice github ] [ skydns 测试记录 CSDN ] etcd 安装配置 安装 yum install etcd 配置 sed -i 's@ETCD_LI ...

  5. Spring MVC 到 Spring Boot 的简化之路(山东数漫江湖)

    背景 从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷.但是Spring和Spring MVC的众多配置有时却让人望而却步,相信有过Spring MVC开发经验的 ...

  6. Deep learning with Theano 官方中文教程(翻译)(三)——多层感知机(MLP)

    关于更多的http://deeplearning.net/tutorial/的翻译还有学习笔记会陆续整理传到博客. 供大家相互交流和学习,本人水平有限,若有各种大小错误,还请巨牛大牛小牛微牛们立马拍砖 ...

  7. python科学计算整理

    网站: http://bokeh.pydata.org/gallery.html

  8. 转 白话解析:一致性哈希算法 consistent hashing

    摘要: 本文首先以一个经典的分布式缓存的应用场景为铺垫,在了解了这个应用场景之后,生动而又不失风趣地介绍了一致性哈希算法,同时也明确给出了一致性哈希算法的优点.存在的问题及其解决办法. 声明与致谢: ...

  9. HDU 6118 度度熊的交易计划 最大费用可行流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6118 题意:中文题 分析: 最小费用最大流,首先建立源点 s ,与超级汇点 t .因为生产一个商品需要 ...

  10. False Positives和False Negative等含义

    True Positive (真正, TP)被模型预测为正的正样本: True Negative(真负 , TN)被模型预测为负的负样本 : False Positive (假正, FP)被模型预测为 ...