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. Gradle加载本地jar包

    有时,我们需要的jar包不一定能在远程仓库中找到,这时我们需要加载本地的jar包. 加载单独的jar包 在项目底下添加libs目录,将jar包仍进libs目录 build.gradle配置如下: de ...

  2. 【poj1830-开关问题】高斯消元求解异或方程组

    第一道高斯消元题目~ 题目:有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变为关 ...

  3. R、Python、Scala和Java,到底该使用哪一种大数据编程语言?

    有一个大数据项目,你知道问题领域(problem domain),也知道使用什么基础设施,甚至可能已决定使用哪种框架来处理所有这些数据,但是有一个决定迟迟未能做出:我该选择哪种语言?(或者可能更有针对 ...

  4. jqgrid 翻页记录选中行

    简单的jqgrid列表 $("#list").jqGrid({ url:contextPath + "/getList", postData: data, da ...

  5. [Leetcode Week14]Path Sum II

    Path Sum II 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/path-sum-ii/description/ Description Giv ...

  6. Laravel 5.2 一、安装与目录结构

    一.Laravel 安装 这里选择通过 Composer 的 create-project 命令来安装 Laravel 应用. composer create-project laravel/lara ...

  7. 【UOJ224】短路

    具体可以看UOJmyy的blog,orz 就是一个贪心. #include<bits/stdc++.h> typedef long long ll; using namespace std ...

  8. 使用while循环遍历文件

    /* 使用while循环遍历文件*/ [root@localhost test1]# vim 17.py //add #!/usr/bin/python ll = open('/tmp/1.txt') ...

  9. Redis Cluster 集群使用(3)

    简介 Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用(HA),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是实现数据分片(Data Shar ...

  10. django自带的django.core.mail模块实现发邮件的功能

    django自带了一个模块,可以实现发邮件的功能.如果项目开发遇到需要发邮件进行验证的时候可以用到. 1.先要准备发件人 发邮件需要使用SMTP.SMTP是什么呢? 简单邮件传输协议(Simple M ...