JavaScript高級(二)


今日は主にES 5の補足内容を共有します.後はES 6の部分を書き続けます.よろしくお願いします.
理解ES
  • フルネーム:ECMAScript
  • js言語規格
  • 私達が使っているjsはその実現
  • です.
  • jsの構成
  • ECMAScript(jsベース)
  • 拡張–ブラウザ端
  • BOM
  • DOM
  • 拡張–サーバ端
  • Node.js
  • ES 5
  • 厳格モード
  • 運転モード:通常モードと厳格モード
  • は厳しいフォーマットを適用します.
  • 作用:
  • は、Javascriptをより厳しい条件で
  • を実行させる.
  • Javascriptの文法のいくつかの不合理さ、不謹慎さを取り除いて、いくつかの奇異な行為を減らします.
  • コードの運行の一部の安全性をなくし、コードの運行の安全性を保証する.
  • 覚えておく必要があるいくつかの変化
  • 宣言定義変数はvar
  • を使用しなければならない.
  • は、カスタム関数のthisキーがグローバルオブジェクト
  • を指すことを禁止する.
  • は、evalスコープを作成し、より安全な
  • .
     'use strict'; //       
    	var username = 'kobe';
    	var age = 43;
    	console.log(username, age);
    	
    	
    	//           this  window
    	function Person(name) {
         
    		this.name = name;
    	}
    	new Person('kobe');
    	
    	//   eval   ,               
    	var a = 2;
    	eval('var a = 123; alert(a)')
    	console.log(a);
    	
    	//             
    	var obj = {
         
    		name: 'kobe',
    		name: 'wade'
    	}
    	console.log(obj.name);
    
  • JSONオブジェクト
  • 作用:jsonオブジェクト/配列とjsオブジェクト/配列との相互変換に用いる
  • .
  • JSON.strigify(Obj/arr)jsオブジェクト(配列)は、jsonオブジェクト(配列)
  • に変換される.
  • JSON.parse(json)Jsonオブジェクト(配列)は、jsオブジェクト(配列)
  • に変換される.
  • Object拡張
  • Object.create:新しいオブジェクトを作成します.
  • は、指定されたオブジェクトを元に新たなオブジェクトを作成する
  • .
  • は、新しい属性を指定し、属性について説明する.
  • value:指定値
  • writable:現在の属性値が修正可能かどうかを識別し、デフォルトはtrue
  • です.
  • get方法:現在の属性値を得るためのコールバック関数
  • set方法:現在の属性値の変化を監視するためのコールバック関数
  • Object.defineProperties(object,descriptors):拡張された複数の属性を指定対象に定義する
  •  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);
    
  • Aray拡張
  • Aray.prototype.indexOf:取得値は、配列内の最初の下付き
  • である.
  • Aray.prototype.lastIndexOf(value):配列内の最後の値を得る
  • Aray.prototype.forEach(function(item,index)::遍歴行列*
  • Aray.prototype.map(function(item,index):遍歴行列は新しい配列を返します.*
  • Aray.prototype.filter(function(item,index)::エルゴードフィルタリングされたサブアレイ*
  • 	var arr = [1, 2, 3, 4, 5, 2, 2, 3];
    			console.log(arr.indexOf(2));
    			console.log(arr.lastIndexOf(3));
    
    			var newArr = arr.map(function(item, index) {
         
    				// console.log(item, index);
    				// return           
    				return item + 10;
    			})
    			console.log(newArr);
    			console.log(arr);
    
    
    			// filter
    			var newArr2 = arr.filter(function(item, index) {
         
    				return item > 3;
    			})
    			console.log(newArr2);
    
    			var arr3 = [1, 2, 3];
    			arr3.push(4);
    			console.log(arr3);
    			arr3.forEach(function(item, index) {
         
    				console.log(item, index);
    			})
    
  • Function拡張
  • Function.prototype.bind(obj)
  • は、関数内のthisをobjに結合し、関数を
  • に戻す.
  • 面接試験問題:bind()とcall()とappy()を区別しますか?
  • fn.bind(obj):関数のthisを指定し、関数
  • を返します.
  • fn.call:関数のthisを指定し、関数
  • を呼び出します.
    var obj={name:‘kobe’}
    function fun(msg){consolie.log(this,msg)}
    //fun.call(obj,123)//fun.apply(obj、[123])//bind修正thisはfun.bind(obj,123)を指す();
    set Timeout(function(){consolove.log(this)//window}.bind(obj)、1000)
  • Date拡張
  • Date.now():現在時間値
  • を取得する.