最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
當前位置:
首頁 > 編程開發 > .net教程 >
  • ASP.net教程之es嚴格模式、對象和擴展。

  • 2019-06-15 09:59 來源:未知

01. 嚴格模式

1. 理解:
* 除了正常運行模式(混雜模式),ES5添加了第二種運行模式:"嚴格模式"(strict mode)。
* 顧名思義,這種模式使得Javascript在更嚴格的語法條件下運行
2. 目的/作用
* 消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為
* 消除代碼運行的一些不安全之處,為代碼的安全運行保駕護航
* 為未來新版本的Javascript做好鋪墊
3. 使用
* 在全局或函數的第一條語句定義為: 'use strict';
* 如果瀏覽器不支持, 只解析為一條簡單的語句, 沒有任何副作用
4. 語法和行為改變
* 必須用var聲明變量
* 禁止自定義的函數中的this指向window
* 創建eval作用域
* 對象不能有重名的屬性。

復制代碼
'use strict';
var age = 12;
console.log(age);
function Person(name, age) {
    this.name = name;
    this.age = age;
}
new Person('kobe', 39);
setTimeout(function () {
    console.log(this);//window
}, 1000);

//* 創建eval作用域
var name = 'kobe';
eval('var name = "anverson";alert(name)');
console.log(name);

var obj = {
    name : 'kobe',
    name : 'weide'
};
console.log(obj);
復制代碼

02. JSON對象

1. JSON.stringify(obj/arr)
* js對象(數組)轉換為json對象(數組)
2. JSON.parse(json)
* json對象(數組)轉換為js對象(數組)

復制代碼
var obj = {
    name : 'kobe',
    age : 39
};
obj = JSON.stringify(obj);
console.log( typeof obj);
obj = JSON.parse(obj);
console.log(obj);
復制代碼

 03. Object擴展

ES5給Object擴展了好一些靜態方法, 常用的2個:

1. Object.create(prototype, [descriptors])
* 作用: 以指定對象為原型創建新的對象
* 為新的對象指定新的屬性, 并對屬性進行描述
value : 指定值
writable : 標識當前屬性值是否是可修改的, 默認為false
configurable: 標識當前屬性是否可以被刪除 默認為false
enumerable: 標識當前屬性是否能用for in 枚舉 默認為false

2. Object.defineProperties(object, descriptors)
* 作用: 為指定對象定義擴展多個屬性
* get :用來獲取當前屬性值得回調函數
* set :修改當前屬性值得觸發的回調函數,并且實參即為修改后的值
* 存取器屬性:setter,getter一個用來存值,一個用來取值

復制代碼
var obj = {name : 'curry', age : 29}
var obj1 = {};
obj1 = Object.create(obj, {
    sex : {
        value : '男',
        writable : true
    }
});
obj1.sex = '女';
console.log(obj1.sex);

//Object.defineProperties(object, descriptors)
var obj2 = {
    firstName : 'curry',
    lastName : 'stephen'
};
Object.defineProperties(obj2, {
    fullName : {
        get : function () {
            return this.firstName + '-' + this.lastName
        },
        set : function (data) {
            var names = data.split('-');
            this.firstName = names[0];
            this.lastName = names[1];
        }
    }
});
console.log(obj2.fullName);
obj2.firstName = 'tim';
obj2.lastName = 'duncan';
console.log(obj2.fullName);
obj2.fullName = 'kobe-bryant';
console.log(obj2.fullName);
復制代碼

對象本身的兩個方法
* get propertyName(){} 用來得到當前屬性值的回調函數
* set propertyName(){} 用來監視當前屬性值變化的回調函數

復制代碼
var obj = {
    firstName : 'kobe',
    lastName : 'bryant',
    get fullName(){
        return this.firstName + ' ' + this.lastName
    },
    set fullName(data){
        var names = data.split(' ');
        this.firstName = names[0];
        this.lastName = names[1];
    }
};
console.log(obj.fullName);
obj.fullName = 'curry stephen';
console.log(obj.fullName);
復制代碼

04. Array擴展

1. Array.prototype.indexOf(value) : 得到值在數組中的第一個下標
2. Array.prototype.lastIndexOf(value) : 得到值在數組中的最后一個下標
3. Array.prototype.forEach(function(item, index){}) : 遍歷數組
4. Array.prototype.map(function(item, index){}) : 遍歷數組返回一個新的數組,返回加工之后的值
5. Array.prototype.filter(function(item, index){}) : 遍歷過濾出一個新的子數組, 返回條件為true的值

 View Code

05. Function擴展

1. Function.prototype.bind(obj) :
* 作用: 將函數內的this綁定為obj, 并將函數返回
2. 面試題: 區別bind()與call()和apply()?
* 都能指定函數中的this
* call()/apply()是立即調用函數
* bind()是將函數返回

復制代碼
function fun(age) {
    this.name = 'kobe';
    this.age = age;
    console.log('dddddddddddddd');
}
var obj = {};
fun.bind(obj, 12)();
console.log(obj.name, obj.age);
復制代碼

 

Learn from yesterday, live for today, hope for tomorrow.
pk10赛车冠军技巧
最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
麻将来了老版本下载 福利彩票开奖 大圣闹海捕鱼平台 贵州思南开超市赚钱吗 浙江十一选五遗漏查询 上海时时彩开奖 大众麻将游戏免费下载 幸运365app是真是假 快乐飞艇从几点开始