javascript中Object使用详解


Posted in Javascript onJanuary 26, 2015
function forEach(o){

var html ="";

for(var i in o){

html += i+"="+o[i]+" ";

}

console.log(html);

console.log(o);

}

//1
//Object.create(proto)
//Object.create(proto,descriptors)
//使用指定的原型和属性来创建一个对象
//参数:
//proto:新创建对象的原型,可为null
//descriptors:一个可选对象,把属性名映射到属性描述符
//返回一个新创建的对象,继承自proto,同时拥有descriptors所秒速的属性。

var obj = Object.create({x:1,y:2},{

z:{value:3,writable:true,enumerable:true,configurable:true}

});

forEach(obj)

obj.z=5

console.log(obj)

console.log("=====================================================")

//2
//Object.defineProperties(o,descriptors)
//创建或配置对象的多个属性
//参数:
//o:要在其上创建或者配置属性的对象
//descriptors:将属性名映射到属性描述符的对象
//返回对象o

Object.defineProperties(obj,{

a:{value:"a",writable:false,enumerable:true,configurable:true},

b:{value:"b",writable:false,enumerable:true,configurable:true}

})

forEach(obj);

console.log("=====================================================")

//3
//Object.defineProperty(o,name,desc)
//创建或配置对象的一个属性
//参数:
//o:将在其上创建或配置属性的对象
//name:将创建或配置的属性名字
//desc:一个属性描述符对象,描述要创建的新属性或对现有属性的修改
//返回对象o

Object.defineProperty(obj,"c",{value:"c",writable:false,enumerable:false,configurable:true})

forEach(obj);

console.log("=====================================================")

//4
//Object.freeze(o)
//将一个对象设为不可改变,不会影响继承属性
//参数:
//o:要冻结的对象
//返回 true|false

var p = {x:1,y:2}

Object.freeze(p);

p.x =2;

console.log(p);

console.log(Object.isFrozen(p)) //true,一旦冻结 无法解冻

console.log("=====================================================")

//5
//Object.getOwnPropertyDescriptor(o,name)
//参数:
//o:一个对象
//name:待查询的属性名
//查询一个属性的特性
//返回对象指定属性的一个属性描述符对象,如果不存在指定属性则返回undefined.
/*
属性描述符就是一个普通的javascript对象,描述某个对象的特性,有二种javascript属性。数据属性有一个值以及三个性质:可枚举性(enumerable)、
可写性(writable)、以及可配置性(configurable).访问器属性(accessor property)有一个getter和/或setter方法,以及可枚举性。
数据属性的描述符:
{
value:任意javascript值,
writable: true|false,
enumerable: true|false,
configurable:true|false
}
访问器属性的描述符:
{
get: function 或 undefined :替换属性值
set: function 或 undefined :替换可写性
enumerable:true|false,
configurable:true|false
}
*/

var o5 = Object.getOwnPropertyDescriptor(obj,"c");

console.log(o5);

forEach(o5);

console.log("=====================================================")

//6
//Object.getOwnPropertyNames(o)
//返回非继承属性的名字
//参数:
//o:一个对象
//返回一个包含o的所有非继承属性的名字,包括哪些不可枚举的属性。{enumerable:false}

var o6 = Object.getOwnPropertyNames(obj);

console.log(o6);

console.log("=====================================================")

//7
//Object.getPrototypeOf(o)
//参数:
//o:一个对象
//返回一个对象的原型

var o7 =Object.getPrototypeOf(obj);

console.log(o7);

console.log("=====================================================")

//8
//Object.hasOwnProperty(propname);
//参数:
//propname包含对象的属性名的字符串
//检查一个属性是否是继承的
//返回true|false

console.log(obj.hasOwnProperty("x")); //=>false

console.log(obj.hasOwnProperty("z")); //=>true

console.log("=====================================================")

//9
//Object.isExtensible(o);
//判断某个对象上是否可以添加新属性
//参数:
//o:待检查可扩展性的对象
//返回 能添加为true|不能为false
//描述:所有的对象在创建的时候都是可扩展的,直到他们被传入 Object.preventExtensions(o) Object.seal(o) 或 Object.freeze(o);

console.log(Object.isExtensible(obj)); // =>true

//Object.preventExtensions(obj)//将它设置为不可扩展

//console.log(Object.isExtensible(obj)); //=>false

console.log("=====================================================")

//10
//Object.isFrozen(o)
//判断对象是否不可改变
//参数:
//o:待检查的对象
//如果o已冻结并不改变则为true;否则为false;

console.log("=====================================================")

//11
//object.isPrototypeOf(o)
//判断当前对象是否为另一个对象的原型
//参数:
//o:所有对象
//如果object是o的原型 则为true,如果o不是一个对象或者object不是o的原型 则为false.

var o = new Object();

Object.prototype.isPrototypeOf(o) // true

Array.prototype.isPrototypeOf([1,2]) //true;

Object.prototype.isPrototypeOf(Function.prototype) //true

console.log("=====================================================")

//12
//Object.isSealed(o)
//判断一个对象的属性是否可添加或删除
//参数:
//o:待检查的对象
//如果o是封闭的则为true,否则为false.
//如果不可以向一个对象添加新的(非继承)属性,并且现有的(非继承)属性不可删除,则是封闭的。
//封闭一个对象常用的方法是Object.seal(o) 或 Object.freeze(o)

console.log("=====================================================")

//13
//object.keys(o)
//返回自由的可枚举属性名
//参数:
//o:一个对象

console.log(Object.keys({x:1,y:2}) ) //=>[x,y]

console.log("=====================================================")

//14
//Object.preventExtensions(o)
//禁止在一个对象上添加新的属性
//参数:
// o:待设置可扩展的对象
//一旦设为不可不可扩展,它就再也不能改为可扩展

console.log("=====================================================")

//15
//object.propertyIsEnumerable(propname)
//检测某个属性是否在for/in 中 循环可见
//参数
//propname:包含对象的指定属性名的一个字符串
//如果对象有一个名为propname的非继承属性,并且该属性可以枚举,则返回true.

var o15 = new Object();

o15.x = 15;

o15.propertyIsEnumerable("x"); //true; 

o15.propertyIsEnumerable("y"); //false;

o15.propertyIsEnumerable("toString"); //false;

console.log("=====================================================")

//16
//Object.seal(o)
//阻止添加或删除对象的属性
//参数
//o:待封闭的对象
//返回处于封闭状态的参数对象o

//17
//Object.toLocaleString()
//返回对象本地的本地化字符串标示
//Object类提供的默认的toLocaleString()方法只是简单的调用toString()方法。
//不过要注意,其他类(Array、Date、Number等)都各自定义自己的这个方法的版本。用于执行本地化字符串转换。定义自己的的类时,可能也需要覆盖这个方法。

//18
//object.toString()
//定义一个对象的字符串表示形式
//在javascript程序中一般不会经常显示的调用toString()方法。一般情况下,在对象中定义这个方法,系统会在需要时自动调用它以便将该对象装换成字符串。

//19
//Object.valueOf()
//给定对象的原始值
//返回 与指定对象关联的原始值,如果存在这样一个值的话,如果没有与改对象关联的值,则返回对象本身

Javascript 相关文章推荐
jQuery实战之品牌展示列表效果
Apr 10 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
Feb 25 Javascript
Javascript判断文件是否存在(客户端/服务器端)
Sep 16 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
Mar 25 Javascript
AngularJS基础 ng-list 指令详解及示例代码
Aug 02 Javascript
浅谈Node.js:理解stream
Dec 08 Javascript
AngularJS中的Promise详细介绍及实例代码
Dec 13 Javascript
js转换对象为xml
Feb 17 Javascript
微信小程序 开发之顶部导航栏实例代码
Feb 23 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
Feb 27 Javascript
Three.js利用dat.GUI如何简化试验流程详解
Sep 26 Javascript
vue使用Sass时报错问题的解决方法
Oct 14 Javascript
JQuery中的事件及动画用法实例
Jan 26 #Javascript
javascript折半查找详解
Jan 26 #Javascript
JavaScript数据类型检测代码分享
Jan 26 #Javascript
浅谈Javascript中的Function与Object
Jan 26 #Javascript
javascript实现动态加载CSS
Jan 26 #Javascript
使用jQuery实现返回顶部
Jan 26 #Javascript
SyntaxHighlighter 3.0.83使用笔记
Jan 26 #Javascript
You might like
PHP+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
用python实现批量重命名文件的代码
2012/05/25 Python
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
git进行版本控制心得详谈
2017/12/10 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
基于pip install django失败时的解决方法
2018/06/12 Python
基于FME使用Python过程图解
2020/05/13 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
初一学生期末评语
2014/04/24 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
素质教育学习心得体会
2016/01/19 职场文书
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python