use strict

只能出现在脚本代码的开始或者函数体的开始、任何实体语句之前。Javascript的具体实现将它们解析为解释器自有的指令。这个指令的目的是说明后续的代码将会解析为严格代码。

ECMAScript 5中的严格模式是该语言的一个受限子集,修正了语言的重要缺陷,并提供健壮的差错功能和增强的安全机制。

声明对象

对象直接量

	var book={
"main title":"Javascript", //属性名有空格,必须用字符串表示
"sub-title":"The Definitive Guide", //属性名有 - 必须用字符串表示
"for":"all ", //属性名有关键字 ,必须用字符串表示
anthor:{
firstname:"David",
surname:"Flanagan"
}
}

new 对象

原型

每一个Javascript对象(null除外)都和另一个对象关联。这儿的另一个对象就是原型,每一个对象都从原型继承属性。所有通过对象直接量创建的对象都具有相同的原型对象,并可以通过Object.prototype获取原型对象的引用。通过关键字new 和构造函数调用创建的对象的原型就是构造函数的prototype属性的值。

Object.create()的方法,创建一个对象,其中第一参数是这个对象的原型,第二个可选参数用来对对象的属性进行进一步的描述。

删除属性 delete

检测属性

in运算符,hasOwnProperty()和propertyIsEnumerable()方法来检测属性

	print("main title" in book);
print("anthor" in book); // in 检测是否是对象的属性 返回true
print(book.hasOwnProperty("main title")); //hasOwnProperty()方法用来检测给定名字是否是对象的自有属性
print(book.hasOwnProperty("author")); //返回false
print(book.propertyIsEnumerable("author")); //返回false 只有检测到自有属性,且这个属性的可枚举性是true时,返回true。
print("fadaf" in book);
print(book["main title"]!== undefined);
print("publishtime" in book);

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">in 可以区分不存在的属性和存在但值为undefined的属性。</span>

存储器属性getter和setter

每一个对象都有与之相关的原型、类和可扩展性。

对象的原型属性是用来继承属性的。原型属性时在对象创建之初就设置好的。通过 new 创建的对象使用构造函数的prototype属性作为它们的原型。通过Object.create()创建的对象使用第一个参数作为它们的原型。

	var p=Object.create(point);				//通过原型的方式创建新的对象
print(p);
print(p.isPrototypeOf(point));
print(point.isPrototypeOf(p)); //返回 true 。point 是 p的原型
print(Object.prototype.isPrototypeOf(p)); // Object 是 p的原型

对象的类属性是字符串,用来描述对象的类型信息。

function classOf(o){						//返回任意对象的类
if(o===null) return "NULL";
if(o===undefined) return "Undefined";
return Object.prototype.toString.call(o).slice(8, -1);// 正数第八个到倒数第二个之间的字符
}

对象的可扩展性用以表示可以给对象添加新的属性,所有内置对象和自定义对象都是显示可扩展的,宿主对象的可扩展性是由Javascript引擎定义的。

	Object.preventExtensions(p);				//将对象转换为不可扩展的
print(Object.isExtensible(p)); // 判断对象是否是可扩展的

一旦将对象转换为不可扩展的就无法将其转换回去。preventExtensions只影响到对象本身的可扩展性。如果给一个不可扩展的对象的原型添加属性,这个不可扩展的对象同样会继承这些新的属性。

Object.seal()除了将对象设置为不可扩展之外,还可以将对象的所有自有属性都设置为不可配置的,不能添加、删除、修改,不过已有的可写属性依然可以修改。对以已经封闭的对象是不能解封的,可以使用Object.isSealed()来检测对象是否封闭。

Object.freeze()将更严格的锁定对象----“冻结”,将所有的数据属性都设置为只读,存储器属性将不受影响。使用Object.isFrozen()来检测对象是否冻结。

序列化对象

序列化对象是指对象的状态转换为字符串,也可将字符串还原为对象。Javascript提供来内置函数JSON.stringify()和JSON.parse()用来序列化和还原Javascript对象。

	a={x:1,y:{z:[false,null,""]}};
s=JSON.stringify(a); //
print(s);
m=JSON.parse(s); // m 是 s 的深拷贝
print(m);

版权声明:本文为博主原创文章,未经博主允许不得转载。

Javascript use strict模式和对象的更多相关文章

  1. javascript中的Strict模式

    目录 简介 使用Strict mode strict mode的新特性 强制抛出异常 简化变量的使用 简化arguments 让javascript变得更加安全 保留关键字和function的位置 总 ...

  2. Javascript之严格模式详解

    一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. ...

  3. JavaScript高级---组合模式设计

    一.设计模式 javascript里面给我们提供了很多种设计模式: 工厂.桥.组合.门面.适配器.装饰者.享元.代理.观察者.命令.责任链 在前面我们实现了工厂模式和桥模式 工厂模式 : 核心:为了生 ...

  4. [Javascript] js的类和对象

    类 graph LR 类-->构造函数 类-->prototype对象 类-->instanceof运算符 类-->constructor属性 类-->isPrototy ...

  5. 深入理解JavaScript中创建对象模式的演变(原型)

    深入理解JavaScript中创建对象模式的演变(原型) 创建对象的模式多种多样,但是各种模式又有怎样的利弊呢?有没有一种最为完美的模式呢?下面我将就以下几个方面来分析创建对象的几种模式: Objec ...

  6. JavaScript高级---桥模式设计

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  7. javascript常见编程模式举例

    近期买到手了一本<javascript框架设计>,具体介绍开发js框架所用到的知识.初读一点,乐帝脆弱的理论修养就暴露无遗了,所以专门加强理论修养,重看javascript编程模式的举例. ...

  8. javascript设计模式——命令模式

    前面的话 假设有一个快餐店,而我是该餐厅的点餐服务员,那么我一天的工作应该是这样的:当某位客人点餐或者打来订餐电话后,我会把他的需求都写在清单上,然后交给厨房,客人不用关心是哪些厨师帮他炒菜.餐厅还可 ...

  9. javascript设计模式——组合模式

    前面的话 在程序设计中,有一些和“事物是由相似的子事物构成”类似的思想.组合模式就是用小的子对象来构建更大的对象,而这些小的子对象本身也许是由更小的“孙对象”构成的.本文将详细介绍组合模式 宏命令 宏 ...

随机推荐

  1. Java多线程系列- DelayQueue延时队列

    我们在开发中,有如下场景 a) 关闭空闲连接.服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之.b) 缓存.缓存中的对象,超过了空闲时间,需要从缓存中移出.c) 任务超时处理.在网络协议滑动窗 ...

  2. 【学】React的学习之旅7-官方例子总结

    如果在标签里有注释,除了使用/**/之外,如果写在子标签中,外面还需要用{}包起来,指明这段是javascript代码,否则这段注释会直接显示在页面上,例如 render:function (){ r ...

  3. 源码阅读笔记 - 2 std::vector (2) 关于Allocator Aware Container特性

    所有的STL容器,都保存一个或默认,或由用户提供的allocator的实例,用来提供对象内存分配和构造的方法(除了std::array),这样的容器,被称作Allocator Aware Contai ...

  4. Google Font字体本地化使用提高网站访问速度

    Google Web font在国内经常不稳定,速度在国内延迟也很高,而引发网页打开速度慢. 一.常见的字体格式介绍 不同的浏览器对字体格式支持是不一致的,常见的如下: 1.TureTpe(.ttf) ...

  5. 在 Arch Linux 玩百度 Flash 战曲游戏乱码

    #!/bin/sh #From: http://hi.baidu.com/imtinge/item/3516761d314481542b3e22f0 #Info: CJK Unicode font M ...

  6. 使用Struts2搭建登录注册示例

    使用Struts2来搭建mvc网站框架还是比较容易的,Struts2提供了各项辅助功能,保证了web开发的快速方便.下面使用struts2来搭建一个登录注册示例. 0 项目结构截图 1 搭建Strut ...

  7. Java class file format specfication

    Java class file format spec Link: https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html Her ...

  8. 修复HTTP 503错误

    要解决此问题,按照下列步骤操作: 1.验证是否已为虚拟服务器配置了应用程序池.默认的应用程序池是MSSharePointPortalAppPool. 请按照下列步骤来确定虚拟服务器正在使用的应用程序池 ...

  9. Javascript中判断变量是 array还是object(是数组还是对象)

    段文字是从github上截取由本人翻译过来的. 原文地址:https://github.com/nathansmith/javascript-quiz/blob/master/ANSWERS.md 怎 ...

  10. java反射,ReflectUtils

    public class ReflectUtils { /** * 通过构造函数实例化对象 * @param className 类的全路径名称 * @param parameterTypes 参数类 ...