浅谈 ECMAScript 和 JavaScript

ES5与ES3基本保持兼容,较大的语法修正和新功能加入,将由JavaScript.next完成。

什么是ECMAScript?
http://baike.baidu.com/link?url=G1T8nGWaC0r3o-TDiDXZhgt75zEHYrG6TLxRfFjJvxpxNZHgy0Hk1Dz0RSsymSl-25oE0uUba81B7JSBc5Cw0a

ECMAScript 5.1

浏览器支持
Opera 11.60
Internet Explorer 9+
Firefox 4
Safari 5.1+
Chrome 13

"use strict" 严格模式(可靠,安全),字符串会被旧版浏览器忽略,放心使用

添加到Object上的构造器
Object.getPrototypeOf
Object.getOwnPropertyDescriptor
Object.getOwnPropertyNames
Object.create
Object.defineProperty
Object.defineProperties
Object.seal
Object.freeze
Object.preventExtensions
Object.isSealed
Object.isFrozen
Object.isExtensible
Object.keys

对象的属性:可以枚举、删除、修改

Array扩展:
Array.prototype.indexOf
Array.prototype.lastIndexOf
Array.prototype.every
Array.prototype.some
Array.prototype.forEach
Array.prototype.map
Array.prototype.filter
Array.prototype.reduce
Array.prototype.reduceRight

代码:

 1 ‘use strict‘;
 2
 3 /**
 4  * 全局JSON对象
 5  * 序列化JSON.stringify ECMAScript值->JSON
 6  * 反序列化JSON.parse   JSON->ECMAScript值
 7  *
 8  * JSON.parse(text[, reviver)
 9  * JSON.stringify(value[, replacer[, space)
10  */
11
12 var result = JSON.parse(‘{"a": 1, "b": 2}‘);
13 console.log(result);
14 console.log(result.b);
15
16 var result = JSON.parse(‘{"a": 1, "b": 2}‘, function (key,value) {
17     if(typeof value == ‘string‘) {
18         console.log(‘string‘);
19         return parseInt(value);
20     }else {
21         console.log(‘other‘);
22         return value;
23     }
24 });
25
26 console.log(result.b);
27
28  var nums = {
29     "first": 7,
30     "second": 14,
31     "third": 13
32  };
33
34 /**
35  * 添加replacer过滤函数操作
36  * space代表缩进空格
37  */
38 var luckyNums = JSON.stringify(nums, function(key, value){
39     if (value == 13) {
40         return undefined;
41     } else {
42         return value;
43     }
44 }, 2);
45
46 console.log(luckyNums);
47
48 var cat = {};
49
50 Object.defineProperty(cat, ‘name‘, {
51     value: ‘Maru‘,
52     writable: false,
53     enumerable: true,
54     configurable: false
55 });
56
57 Object.defineProperty(cat, ‘skill‘, {
58     value: ‘exploring boxes‘,
59     writable: true,
60     enumerable: true,
61     configurable: false
62 });
63
64 for(var key in cat) {
65     console.log(key + ‘: ‘ + cat[key]);
66 }
67
68 console.log(Array.isArray(‘No u‘));
69 console.log(Array.isArray([‘No‘, ‘u‘]));
70
71
72 var mike = JSON.stringify({mike: ‘taylor‘});
73 console.log(mike); //{"mike":"taylor"}
74 console.log(typeof mike); //string
75
76 /**
77  * Array.isArray()直接写在了构造器上,而不是prototype对象上
78  */
79
80 /**
81  * Function.prototype.bind(thisArg[, arg1[, arg2,...)
82  */
83 function locate() {
84     console.log(this.location);
85 }
86
87 function Maru(location) {
88     this.location = location;
89 }
90
91 var maru = new Maru(‘some words‘);
92 var locateMaru = locate.bind(maru);
93
94 locateMaru();
时间: 2024-08-08 22:41:57

浅谈 ECMAScript 和 JavaScript的相关文章

浅谈模块化的JavaScript

模块化JavaScript之风早已席卷而来, CommonJS . AMD . NodeJS .RequireJS . SeaJS . curljs  等模块化的JavaScript概念及库扑面而来,不得不承认,对于前端JavaScript代码的组织编写是一次伟大的变革.本文主要参考snandy 的有关 modular js 系列文章,对SeaJS和RequireJS做一个系统的深入分析及对比. 一.我们为什么要用模块化的JavaScript 相信大家也都经历了“过程式的JavaScript”.

浅谈 c++/java/javascript 之传参

本文主要梳理了几种语言的传参机制,即关于 传值.传引用 之争 最近开始学node.js搭后端服务器时,碰到这样一句话 java只有一种传参机制就是传值 javascript其大部分语法规范取自于JAVA语法规范, 那么这种句话也适用于它,于是也有  javascript只有一种传参机制就是传值 为了理解这句话,我从个人感觉较为接近底层的语言c++写一些测试,代码如下 #include<iostream> using namespace std; class Test { public: int

浅谈系列之 javascript原型与对象

在我学习与使用javascript三个月中,我一直对javascript的继承关系以及prototype理解不清,导致很多时候为什么这么用说不出个所以然来.截止到本周为止,通过之前的学习以及自己的再学习,自我感觉算是对这一块有了较为清晰的认识,此文将谈谈我对javascript原型与继承的理解,在此之前,我们首先要知道一些基本的知识. 知识铺垫 1.数据类型 JavaScript中的数据类型在曾经我也有提到过,它包括未定义值(undefined),空值(null),布尔值(boolean),数字

浅谈ECMAScript

JS的三大组成部分 BOM DOM  ECMAScript ES5 严格模式 在全局作用域前加一个 "use strict" 严格模式带来了那些好处: 1.增加了更多的报错的场合 使代码编译更加规范 2.为未来的新版本做好了铺垫 3.提高编译器效率,增加运行速度. 体现: 1.声明变量必须用var 2.不允许删除变量 3.this的指向在全局中指向window,不然则是 undefined 4.不能自调用 ES5新增的常见方法 数组中: indexOf  输入val 判断第一个出现字符

浅谈JavaScript中的原型模式

在JavaScript中创建对象由很多种方式,如工厂模式.构造函数模式.原型模式等: <pre name="code" class="html">//工厂模式 function createPerson(name,age,job) { var o = new Object; o.name = name; o.age = age; o.job = job; o.sayName = function() { alert(this.name); } retur

浅谈javascript的原型及原型链

浅谈javascript的原型及原型链 这里,我们列出原型的几个概念,如下: prototype属性 [[prototype]] __proto__ prototype属性 只要创建了一个函数,就会为该函数创建一个prototype属性,指向该函数的原型对象.实例对象是不会拥有该属性的.默认情况下,该原型对象也会获得一个constructor属性,该属性包含一个指针,指向prototype属性所在的函数. Person.prototype.constructor===Person [[proto

浅谈 JavaScript 编程语言的编码规范

对于熟悉 C/C++ 或 Java 语言的工程师来说,JavaScript 显得灵活,简单易懂,对代码的格式的要求也相对松散.很容易学习,并运用到自己的代码中.也正因为这样,JavaScript 的编码规范也往往被轻视,开发过程中修修补补,最终也就演变成为后续维护人员的恶梦.软件存在的长期价值直接与编码的质量成比例.编码规范能帮助我们降低编程中不必要的麻烦.而 JavaScript 代码是直接发送给客户浏览器的,直接与客户见面,编码的质量更应该受到关注. 本文浅谈 JavaScript 编程中关

浅谈javascript单体【读javascript设计模式第五章节单体有感】

单体,整个运行环境就独有一份,最简单的一种单体就是一个把所有属性和方法都集中在一起的对象,区别于一般的字面量对象,一般字面量对象是对一个物体的描述,集合该物体所具有的一些属性和方法,而单体则包含更多的些逻辑在里面,单体的好处有,划分命名空间,如果用来作为网页包装器,可以使得页面所有变量都封装在一个对象里,大幅度减小网页里的全局变量, 代码如: common.js (function(wz){ $.extend({ init:function(){ var self = this; this.bi

JavaScript中toStirng()与Object.prototype.toString.call()方法浅谈

toStirng()与Object.prototype.toString.call()方法浅谈 一.toString()是一个怎样的方法?它是能将某一个值转化为字符串的方法.然而它是如何将一个值从一种类型转化为字符串类型的呢? 通过下面几个例子,我们便能获得答案: 1.将boolean类型的值转化为string类型: console.log(true.toString());//"true" console.log(false.toString());//"false&quo