<script type="text/javascript">

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()
//给定对象的原始值
//返回 与指定对象关联的原始值,如果存在这样一个值的话,如果没有与改对象关联的值,则返回对象本身

Object学习笔记的更多相关文章

  1. ECMAScript5之Object学习笔记(一)

    随着IE的逐步追赶,目前到IE11已经能够很好的支持ECMAScript5标准了,其他的现代浏览器像firefox,chrome,opera就更不用说了. 再加上nodejs使得javascript在 ...

  2. [javascript|基本概念|Object]学习笔记

    对象:数据和功能的集合 创建对象:new 对象类型名称 e.g.: var o = new Object(); 或 var o = new Object(省略(),不推荐) 或 var o = {}( ...

  3. ECMAScript5之Object学习笔记(三)

    第三部分继续... Object.getOwnPropertyDescriptor(obj, prop) 获取一个对象的属性描述符 根据"Own"这个词我们可以猜到,prop只能是 ...

  4. ECMAScript5之Object学习笔记(二)

    继续第二部分 Object.freeze(obj) 看字面意思就是“把一个对象冻结”. 下面我们来看个简单的例子以作说明: // a person instance var person = { na ...

  5. JavaScript Object学习笔记二

    Object.create(proto, [propertiesObject])//创建对象,使用参数一来作为新创建对象的__proto__属性,返回值为在指定原型对象上添加自身属性后的对象 //参数 ...

  6. JavaScript Object学习笔记一

    Object.assign(target, source1, source2, ...)//用于对象的复制合并(同名属性后覆盖前)或拷贝(拷贝自身可枚举属性,不拷贝继承属性或不可枚举属性),将sour ...

  7. Object C学习笔记24-关键字总结

    学习Object C也有段时间了,学习的过程中涉及到了很多Object C中的关键字,本文总结一下所涉及到的关键字以及基本语法. 1.  #import #import <> 从syste ...

  8. Object C学习笔记22-#define 用法

    上一篇讲到了typedef 关键字的使用,可以参考文章 Object C 学习笔记--typedef用法 .而在c中还有另外一个很重要的关键字#define. 一. #define 简介 在C中利用预 ...

  9. Object C学习笔记21-typedef用法

    在上一章的学习过程中遇到了一个关键字typedef,这个关键字是C语言中的关键字,因为Object C是C的扩展同样也是支持typedef的. 一. 基本作用 typedef是C中的关键字,它的主要作 ...

随机推荐

  1. 关于ARP攻击的原理以及在Kali Linux环境下的实现

    关于ARP攻击的原理以及在Kali Linux环境下的实现 全文摘要 本文讲述内容分为两部分,前半部分讲述ARP协议及ARP攻击原理,后半部分讲述在Kali Linux环境下如何实现ARP攻击以及AR ...

  2. 闭包拾遗 & 垃圾回收机制

    闭包拾遗 之前写了篇<闭包初窥>,谈了一些我对闭包的浅显认识,在前文基础上,补充并且更新些对于闭包的认识. 还是之前的那个经典的例子,来补充些经典的解释. function outerFn ...

  3. unity3d 纹理动画

    不知道大家有没有玩过赛车游戏 赛车游戏的跑道有路标,如下图 玩过赛车游戏的都知道,大多数赛车游戏的路标是会动的,如上图,它会从右往左运动 不会发动态图,大家脑补一下吧 没有玩过赛车游戏的也不要紧,大家 ...

  4. RVM 解决 Ruby 的版本问题

    RVM 是一个命令行工具,可以提供一个便捷的多版本 Ruby 环境的管理和切换. RVM 的官网是 https://rvm.io/. 如果你打算学习 Ruby / Rails, RVM 是必不可少的工 ...

  5. Fiddler工具的基本功能

    Fiddler是一款用于网页数据分析,抓取的工具,里面集成了对网页强大的功能外,还可以通过设置,使其对手机的数据也可以进行抓取 Fiddler的原理是: 通过在客户端和服务器之间创建一个代理服务器来对 ...

  6. SVN技术交流提纲

    SVN技术交流提纲:http://lazio10000.github.io/tech/SVN/#/bored

  7. Bootstrap系列 -- 31.嵌套分组

    我们常把下拉菜单和普通的按钮组排列在一起,实现类似于导航菜单的效果.使用的时候,只需要把当初制作下拉菜单的“dropdown”的容器换成“btn-group”,并且和普通的按钮放在同一级 <di ...

  8. jTemplate —— 基于jQuery的javascript前台模版引擎

    reference: http://blog.csdn.net/lexinquan/article/details/6674102     http://blog.csdn.net/kuyuyingz ...

  9. javaWeb开发模式

    1.发展历程 2.模式分析 JSP+JavaBean模式适合开发业务逻辑不太复杂的web服务程序.这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据(JSP编写业务逻辑 ...

  10. 消息中间件NetMQ结合Protobuf简介

    概述 对于稍微熟悉这两个优秀的项目来说,每个内容单独介绍都不为过,本文只是简介并探讨如何将两部分内容合并起来,使其在某些场景下更适合.更高效. NetMQ:ZeroMQ的.Net版本,ZeroMQ简单 ...