<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. 做中学learning by doing——个人感想20155312张竞予

    做中学learning by doing--个人感想 概要 阅读五篇博客后的感触 我的个人技能 个人经验的类比与总结 c语言学习情况 java学习目标及规划 公文写作能力 我的感触 仔细阅读了老师公众 ...

  2. Gt9xx芯片,在规格书+Linux驱动的基础上,移植为USB裸机经验。直接用开发板,不去碰硬件的坑。

    1,用内核代码和规格书来印证数据格式: //命令3字节,IC地址 u8 end_cmd[] = {GTP_READ_COOR_ADDR >> , GTP_READ_COOR_ADDR &a ...

  3. Bootstrap系列 -- 25. 下拉菜单分割线

    在Bootstrap框架中的下拉菜单还提供了下拉分隔线,假设下拉菜单有两个组,那么组与组之间可以通过添加一个空的<li>,并且给这个<li>添加类名“divider”来实现添加 ...

  4. promise与aysnc 与EventProxy

    promise 已经是 es6推荐的内置的东西了,所以我们需要清楚. promise的使用类似与jquery的链式操作,.then()  .then()中不断使用.回调看上去清晰明了,建议使用. as ...

  5. Linq之Linq to Objects

    目录 写在前面 系列文章 linq to objects 总结 写在前面 上篇文章介绍了linq的延迟加载特性的相关内容,从这篇文章开始将陆续介绍linq to Objects,linq to xml ...

  6. 1、面向对象以及winform的简单运用(开篇)

    面向对象概述: 要学习好面向对象,我们应该从三个问题入手: 1.什么是面向对象? 2.为什么要面向对象? 3.该怎么面向对象? 面向对象,首先要有一个对象,那么对象是什么呢? 对象的定义是人们要进行研 ...

  7. 由DataGridTextColumn不能获取到父级DataContext引发的思考

    在项目中使用DataGrid需要根据业务动态隐藏某些列,思路都是给DataGrid中列的Visibility属性绑定值来实现(项目使用MVVM),如下 <DataGridTextColumn H ...

  8. 配置ipvsadm服务

    LVS的三种包转发方式      LVS提供了三种包转发方式:NAT(网络地址映射).IP Tunneling(IP隧道).Direct Routing(直接路由)     不同的转发模式决定了不同的 ...

  9. Lucene 4.7 --高亮显示

    jar lucene-analyzers-common-4.7.0.jar lucene-analyzers-smartcn-4.7.0.jar lucene-core-4.7.0.jar lucen ...

  10. 【CodeForces 606A】A -特别水的题1-Magic Spheres

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102271#problem/A Description Carl is a beginne ...