javascript研究ノート1:javascriptプロトタイプ+オブジェクトリテラルなど。

1. for-inを使用してオブジェクトをトラバースする場合(for-inは配列をトラバースしないのが最適で、配列のトラバースは通常for-eachを使用します)、オブジェクトのプロトタイプチェーンの干渉をフィルターで除去するのが最適です。
if(Object.prototype.clone === 'undefined'){
		Object.prototype.clone = function(){}
	}

	for(var key in MyObject){
		if(MyObject.hasOwnProperty(key)){//代表是有原型链的,原型链中的有一些对象或者属性可能会与我们正在遍历的对象的属性发生冲突,故而应该过滤掉原型链。

		}
	}

2.プロトタイプのプロパティ(メソッド)を増やすには、Object.prototype.Properties / Methods = ... / function(){}などのメソッドを使用する必要があります。


3.暗黙のグローバル変数と明示的なグローバル変数:暗黙のグローバル変数は関数(関数)で宣言されたグローバル変数です。明示的なグローバル変数は関数で宣言されたグローバル変数ではありません。

3.コードで暗黙の型変換を回避します。「false == 0」と判断された場合、trueを返します。この状況は論理的ではありません。現時点では、これを回避するために「false === 0」を使用する必要があります。暗黙的な変換のタイプ。スタイルが変換されました。

4. eval()を使用しない:この関数は、任意の文字列をjavascriptコードフラグメントとして実行できます。説明するコードが事前に記述されている場合、eval()を使用する理由はありません。
  コードが実行時に動的に生成される場合、対応する機能を実現する他の方法があります。

 例子:
		var a = eval('1234+567');//结果是1810
		var b = '1234+567';//结果是1234+567
		alert(a);

5.parseInt():このメソッドは文字列を解析し、その中の値を返します。文字列が「09」タイプの場合、parseInt('09 ')を使用すると、0で始まる文字列が返されるため、0が返されます。 8進数として解析されます。
  この場合、このメソッドを制約するために別のパラメーターを使用する必要があります。たとえば、このparseInt( '09'、10)は、文字列を解析するときに文字列が10進数で解析され、返される結果が9であることを示します。
  もちろん文字列の場合はすべて数値ですが、Number('09 ')メソッドを使用して9の結果を取得することもできますが、 "009 Hello"のような文字列をNumber()メソッドを使用して変換すると、返される結果はNaNになります。 、
  parseInt()メソッド使用することをお勧めします。

6. javascriptの「オブジェクトリテラル」:

  var Person = function(name){
	this.name = name,
	this.say = function(){
		return 'I am '+this.name;
	}
  }

newを使用してこのコンストラクターを使用すると、実際には次のことが内部で発生します。

 var Person = function(){
	  //创建了一个“空”对象,此对象的引用指向了Person 这个对象
	  var this = {};
	  //想this这个“空”对象添加属性和方法
	  this.name =  name,
	  this.say = function(){
		  return 'I am '+this.name;
	  }

  }

  実際、上記のこのオブジェクトが空のオブジェクトであるのは不正確です。これは、Personのプロトタイプのすべてのメンバーも継承するためです。したがって、次のステートメントのようになります
    。this= Object.create(Person.prototype)
  また、コンストラクターでは、パラメーターがオブジェクトである限り、任意のパラメーターを返すことができます

。7。javascriptの再利用可能なメソッドは、最初のプロトタイプに配置する必要があります。


おすすめ

転載: blog.csdn.net/nanxiaotiantian/article/details/20216143