【js学习笔记-028】-- 对象的创建
来源:互联网 发布:网络兼职信息网 编辑:程序博客网 时间:2024/05/10 02:06
可以通过直接量,关键字new和ECMAScript 5 Object.create()函数来创建对象。
对象直接量:若干名值对组成的映射表,名值对中间用冒号分开,名值对之间用逗号分隔。整个映射表用括号括起来。
通过new创建对象:关键字new后跟随一个函数调用。这里的函数称为构造函数,构造函数用以初始化一个新创建的对象。Js语言核心中的原始类型包含内置构造函数。如
var o = new Object(); //创建一个空对象和{}一样
var a = new Array();
var d = new Date();
var r = new RegExp(“js”);
原型:每一个js对象(null除外)都和另一个对象相关联。“另一个”对象就是我们熟知的原型,每个对象都从原型继承属性。
ECMAScript5 Object.create():需要两个参数,第一个是这个对象的原型,第二个(可选)用以对对象的属性进一步描述。可通过传入null来创建一个没有原型的新新对象。这种方法创建的对象不会继承任何东西,甚至不包括基础方法,如toString()。也就是说,它将不能和”+”运算符一起正常工作。如果需要创建一个普通对象,需要要传入Object.prototype
var o3 = Object.create(Object.prototype) ; // o3和{},new Object()一样。
如下:
function inherit(p){
if(p==null) throw TypeError();
if(Object.create) return Object.create(p);
var t = typeof p
if(t!=”object” && t!=”function”) throw TypeError();
function f(){}; //定义一个空构造函数
f.prototype = p;
return new f();
}
目前只需要理解,返回的对象继承了参数对象的属性。它不能等同于Object.create(),因为它传入null无效。上面的函数还有一个功能就是防止库函数无意间修改那些不受你控制的对象
这的原理就是不是将对象直接作为参数传入函数,而是将它的继承对象传入函数。当然函数读取继承对象属性时,实际上是读取的是继承来的值。如果给继承对象的属性赋值,则这些属性只会影响这个继承对象自身,而不是原始对象:
var o = {x:”don’t change this value”};
library_function(inherit(o)); //防止对o的意外修改
- 【js学习笔记-028】-- 对象的创建
- 我的js学习笔记之创建对象
- JS学习笔记01-创建对象
- js学习笔记:对象——创建对象
- JavaScript学习四 js对象的创建
- JS学习笔记-OO疑问之对象创建
- JS学习笔记-对象创建模式及原型
- Ajax学习笔记-XMLRequest对象的创建
- JavaWeb学习笔记04-js的对象
- JS学习笔记-函数对象的方法
- js对象的创建
- Js初学笔记之<创建对象的五种方式>
- javascript创建对象学习笔记
- 学习笔记:创建JSONObject对象:
- C++学习笔记--对象创建
- JS 学习笔记--Object对象
- 【js学习笔记-027】-- 对象
- js内置对象 学习笔记
- 羊皮卷之二 我要用全身心的爱来迎接今天
- Entity Framework 4.1/4.3 之三(由4.0过渡到4.1/4.3)
- 初学dll
- Tomcat支持中文名和不区分大小写
- Vs2010+VB+SQL2008 DataSet
- 【js学习笔记-028】-- 对象的创建
- jave学习第三节代码
- 虚拟机VirtualBox 中 ubuntu13.04 安装Hadoop 集群
- [Oracle] expdp ORA-39006, ORA-39065 的解决办法
- 十进制与十六进制相互转换
- const static 的问题
- nginx中CPU亲和性源码解读
- 【netca错误】图形界面可以起来,但是netca起不来,报错。
- Entity Framework 4.1/4.3 之四(DBContext 之 1 DBContext 是谁)