javascript中Object使用详解

 更新时间:2015年01月26日 11:34:38   投稿:hebedich  
这篇文章主要介绍了javascript中Object使用详解,非常全面详尽,有需要的小伙伴参考下

复制代码 代码如下:

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实现N皇后问题算法谜题解答

    JavaScript实现N皇后问题算法谜题解答

    这篇文章主要介绍了JavaScript实现N皇后问题算法谜题解答,N皇后问题是指将N个皇后放置在NxN的国际象棋棋盘上,其中没有任何两个皇后处于同一行、同一列或同一对角线上,以使得它们不能互相攻击,需要的朋友可以参考下
    2014-12-12
  • 简单实现js点击展开二级菜单功能

    简单实现js点击展开二级菜单功能

    这篇文章主要教大家简单实现js点击展开二级菜单功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 微信小程序实现点击效果

    微信小程序实现点击效果

    这篇文章主要为大家详细介绍了微信小程序实现点击效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • js实现简单计算器

    js实现简单计算器

    一个简洁的网页JS计算器,附详细代码释义。通过下边的效果演示就可以看到,这是一个挺小的js网页计算器,界面美化的我想还是不错的,毕竟在没有使用任何图片修饰的情况下,很好看,而且功能挺实用,可以完成基本的数学算数运算。
    2015-11-11
  • 微信小程序 wx:for遍历循环使用实例解析

    微信小程序 wx:for遍历循环使用实例解析

    这篇文章主要介绍了微信小程序 wx:for遍历循环使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 删除条目时弹出的确认对话框

    删除条目时弹出的确认对话框

    这篇文章主要介绍用js的confirm实现的删除条目时弹出的确认对话框,询问是否要删除这条记录,需要的朋友可以参考下
    2014-06-06
  • Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法

    Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法

    这里也会遇到一次性关闭所有modal引起阴影遮罩的问题,也就是所有modal都关闭了,但是主页面仍然被阴影遮罩。下面通过本文给大家分享解决方案,需要的朋友参考下吧
    2017-02-02
  • js onmousewheel事件多次触发问题解决方法

    js onmousewheel事件多次触发问题解决方法

    做一个首屏和第二屏之间滚动鼠标滚轮就可以整平切换的效果,遇到了很多问题,下面是问题解决方法
    2014-10-10
  • javascript中的 onchange事件详解

    javascript中的 onchange事件详解

    onchange 事件会在域的内容改变时发生,可用于单选框与复选框改变后触发的事件,本文通过示例代码介绍javascript中的 onchange事件,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • Javascript 对象(object)合并操作实例分析

    Javascript 对象(object)合并操作实例分析

    这篇文章主要介绍了Javascript 对象(object)合并操作,结合实例形式分析了javascript基于jQuery的extend方法、对象属性、遍历赋值等操作实现对象合并相关操作技巧与使用注意事项,需要的朋友可以参考下
    2019-07-07

最新评论