1. <wbr id="m8vu6"></wbr>

      <del id="m8vu6"><center id="m8vu6"><source id="m8vu6"></source></center></del>
        <p id="m8vu6"><sub id="m8vu6"></sub></p>

        VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 編程開發 > .net教程 >
        • ASP.net教程之es嚴格模式、對象和擴展。

        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.
        相關教程
                
        免费看成年人视频大全_免费看成年人视频在线观看