JavaScript 对象属性与方法
对象的创建:
var obj = {a:1,b:2};
var obj = new Object();
obj.a = 1;
obj.b = 2;
3 Object.create(targetObj):根据已有对象创建
- 使用已有对象提供新对象的原型链,现有对象会将targetObj作为自己的原型链
- 返回一个新对象,带着指定的原型对象和属性
- 该方法可以用于实现类的继承
var span = document.createElement("span");
span.k = "extends!";
var obj1 = Object.create(span);
// console.dir(obj1.__proto__.k);//extends!
console.dir(obj1.__proto__);//span
console.log(obj1.prototype);//undefined
console.log(obj1 === span);//false,返回的是新对象
Object.assign 对象浅复制
Object.assign(targetObj,sourceObj1,sourceObj2......);
该方法用于将一个或多个源对象的属性拷贝(浅复制)到目标对象,返回目标对象。
- 只能复制对象属性,不能复制对象的原型链属性
- 只能复制可枚举类型,
- 引用关系也会一同被复制,只能浅复制
- 多个源对象复制时,如果有相同的属性,后面的将会覆盖前面的
- 复制属性定义应当使用Object.getOwnPropertyDescriptor()和Object.defineProperty()
- String和Symbol类型也会被拷贝,undefined和null可以被拷贝不报错
- IE不支持该方法,需要考虑兼容
var t = {x:1}
var obj = {a:1,b:null,c:undefined,d:t}
var obj2 = Object.assign({},obj);
console.log(obj2);//可以复制null
obj2.d.x = 1000;
console.log(t.x);//1000,浅复制,存在引用
Object.assign与Object.create
assign:复目标对象属性给自身,包括原型
create:将目标对象作为自己的原型
var span = {};
span.t = "get prop!";
span.__proto__.x = "get prop!";
var obj = Object.create(span);
var obj1 = Object.assign({},span);
console.log("create:",obj);
console.log("assign:",obj1);

Object.defineProperty(obj,property,descObj)
var obj = {_b:1};
Object.defineProperty(obj,"a",{
configurable:false,//是否可删除属性并且重定义描述对象
enumerable:false,//是否可枚举,比如for循环和Object.keys
writable:false,//是否可更改(改的话不会报错但是改不了)
value:10
});
// obj.a = 1000;
// console.log(obj.a);//10,不可更改
// console.log(Object.keys(obj));//没有a,不可枚举
for ( var key in obj) {
console.dir(key);//没有a,不可枚举
}
delete obj.a;
console.log(obj.a);//不可删除
Object.defineProperties(obj,{prop1:{},prop2:{}......})
- 该方法用于为一个对象定义多个属性描述对象Object.defineProperties(obj,{prop1:{},prop2:{}......})
Object.getOwnPropertyNames(obj)
- 该方法用于获取对象的全部属性名称组成的数组,并返回该数组
Object.getOwnPropertyDescriptor(obj,prop)
- 该方法用于获取对象某个属性的描述对象,并返回该对象

obj.propertyIsEnumerable(prop)
- 该方法用于判断对象是否包含某个属性,返回布尔值
obj.isPrototypeOf(o)
- obj是否是o的原型
- 是否有类的继承关系、
Obj.hasOwnProperty(prop)和 in
- hasOwnProperty只能判断对象属性,不能判断原型属性
- in既能判断对象属性,又能判断原型属性
var obj = {a:1,b:2,c:3}
var obj1 = Object.create(obj);
console.log("a" in obj1);//true
console.log(obj1.hasOwnProperty("a"));//false
Object.frozen(obj)
- 冻结对象,不能删除与重置属性,不能重置属性的描述对象
- 不能被Object.create()增加冻结的对象属性
- 可以被Obejct.assign()复制,并且复制之后的属性可删除和修改
Object.is()
判断,等同于===,但是有几个例外情况
console.log(NaN === NaN);//false
console.log(Object.is(NaN,NaN));//true
JavaScript 对象属性与方法的更多相关文章
- Javascript对象属性与方法汇总
Javascript对象属性与方法汇总 发布时间:2015-03-06 编辑:www.jquerycn.cn 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符 ...
- 转: JavaScript 获取对象属性和方法
一.获取对象属性和方法 Object.keys()for in 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返回的数组的所有属性(可枚举或不可枚举 ...
- JavaScript 获取对象属性和方法
ShineJaie 原创整理,转载请注明出处. 一.获取对象属性和方法 Object.keys() 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返 ...
- JavaScript 访问对象属性和方法及区别
这篇文章主要介绍了浅析JavaScript访问对象属性和方法及区别的相关资料,仅供参考 属性是一个变量,用来表示一个对象的特征,如颜色.大小.重量等:方法是一个函数,用来表示对象的操作,如奔跑.呼吸. ...
- JavaScript document属性和方法
JavaScript document属性和方法 --------------------------------------------属性: 1. Attributes 存储节点的属性列表 ...
- 删除要被替换的元素的所有事件处理 程序和 JavaScript 对象属性
使用本节介绍的方法替换子节点可能会导致浏览器的内存占用问题,尤其是在 IE 中,问题更加明显.在删除带有事件处理程序或引用了其他 JavaScript 对象子树时,就有可能导致内存占用问题.假设 某个 ...
- JavaScript对象属性的基础教程指南
JavaScript是使用“对象化编程”的,或者叫“面向对象编程”的.所谓“对象化编程”,意思是把JavaScript能涉及的范围划分成大大小小的对象,对象下面还继续划分对象直至非常详细为止,所有的编 ...
- Js基础知识7-JavaScript所有内置对象属性和方法汇总
对象什么的,程序员可是有很多呢... JS三大对象 对象,是任何一个开发者都无法绕开和逃避的话题,她似乎有些深不可测,但如此伟大和巧妙的存在,一定值得你去摸索.发现.征服. 我们都知道,JavaScr ...
- JavaScript 对象属性
JavaScript 对象属性 属性中的 . 和 [ ](点 和 方括号)的区别 . :取对象自身的属性值: [ ]:括号内容可以是变量: var obj = {}; obj.name = 'Twx ...
随机推荐
- C++——绪论
计算机语言的发展 1.机器语言(二进制).汇编语言.比较难以理解和识记,与人类语言之间的差距太大: 2.高级语言,可以写出类似于人类思维的语句,可以有人们习惯的表达方式: 3.面向对象的语言,描述客观 ...
- Android 开发 SurfaceView 总结
Android中一种常见的自定义画UI接口类:SurfaceView.可以在异步线程中,完成相关数据更新. 首先介绍几个基本的定义,在其他知识中也会设计如下名词: 1.Paint 画笔,所有的图像.图 ...
- Oracle查询当前用户和当前用户下的所有表
转载自:http://blog.itpub.net/29485627/viewspace-1246317/ Oracle查询当前用户和当前用户下的所有表 (1)查询当前用户 SQL> show ...
- DFT测试-OCC电路介绍
https://www.jianshu.com/p/f7a2bcaefb2e SCAN技术,也就是ATPG技术-- 测试std-logic, 主要实现工具是: 产生ATPG使用Mentor的 Test ...
- XSS Payload List
标签.事件.属性 xss的攻击原理就是前端被插入了恶意的js代码,下面展示大部分可以执行js的标签.事件.属性: 标签(label) <script> <a> <p> ...
- Python入门1 —— 初识Python
一:Python介绍 1.Python是什么? Python是一门编程语言,编程语言是一门语言. 语言就是一个事物与另一个事物沟通的工具. 而编程语言则是人与计算机沟通的介质. 2.为什么要跟计算机沟 ...
- 拦截导弹类问题 (Codevs4888零件分组POJ1065Wooden Sticks)(LIS及其覆盖问题)
拦截导弹 题意:求最长不上升子序列长度:求一个序列最少分成几个非增子序. 第一问易求,已知序列a,令f[i]为a前i个元素的最长非增子序的长度,则有 f[i]=max{f[i],f[j]+1} (1& ...
- selenium参数化-ddt模块
DDT介绍: DDT(数据驱动测试)允许您通过使用不同的测试数据运行一个测试用例来使其倍增,并使它显示为多个测试用例.要使用DDT需要安装,安装命令:pip install ddt 使用方法: dd. ...
- codeforces A. Zoning Restrictions Again
A. Zoning Restrictions Again ou are planning to build housing on a street. There are n spots availab ...
- C语言随笔5:函数、函数指针
函数 C语言中函数参数传递时,将实参的值拷贝到函数参数的存储区中.这种传递参数的方式称为按值传递. 函数不会访问实参本身,访问的是函数存储在栈区的副本,不会改变实参.函数凋用结束,函数在栈区的内容释放 ...