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 相关文章推荐
JS 退出系统并跳转到登录界面的实现代码
Jun 29 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
Oct 18 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
node.js中的http.response.writeHead方法使用说明
Dec 14 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
May 05 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
Oct 29 Javascript
javascript中的后退和刷新实现方法
Nov 10 Javascript
jQuery简介_动力节点Java学院整理
Jul 04 jQuery
实战node静态文件服务器的示例代码
Mar 08 Javascript
Vue框架下引入ActiveX控件的问题解决
Mar 25 Javascript
JavaScript算法学习之冒泡排序和选择排序
Nov 02 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
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中文件上传的一个问题
2010/09/04 PHP
php短址转换实现方法
2015/02/25 PHP
php判断目录存在的简单方法
2019/09/26 PHP
javascript写的一个链表实现代码
2009/10/25 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
js运动应用实例解析
2015/12/28 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
世界顶级足球门票网站:Live Football Tickets
2017/10/14 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
Oracle的内存结构(Memory structures)
2015/06/10 面试题
个人实习生的自我评价
2014/02/16 职场文书
网络技术专业求职信
2014/02/18 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
新闻通讯稿模板
2015/07/22 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
Python中的 enumerate和zip详情
2022/05/30 Python