javascript文法の要約
6576 ワード
""
、0
、NaN
、undefined
、null
は、if ()
において自動的にfalse
に変換され、残りはtrue
である.String
をInt
に切り替えるには、最も速い方法var str = '1'; +str
が必要です.演算には、括弧を入れる必要があります.1 + (+str)
タイプになり、他の演算法則String
は全部(-,*,/,%)
タイプの演算になります.Number
は値タイプの空の値を表し、undefined
はポインタタイプの空の値を表しています.null
はvar obj = {}
に相当し、0x01010101 <==> {}; obj = 0x01010101
に伝達されるものはvar obj2 = obj
であり、0x01010101
は仮定のポインタである.(function(){})(); //
(function(){}()); //
~function(){}(); //
+function(){}(); //
function(){}(); //
// 4
0x01010101
は、方法と同じ行で起動される:function ClassA() { }
ClassA.prototype.say = function() { console.log('prototype'); }
ClassA.say = function() { console.log('constructor'); }
new ClassA().say(); // prototype (new ClassA()).say()
new ClassA.say(); // constructor new (ClassA.say())
new
変数を検出するためのタイプ:typeof 'a' => string
typeof 1/1.1/NaN => number
typeof true => boolean
typeof undefined => undefined
typeof function (){} => function
typeof {}、[]、null、/a/ => object
typeof
は、オブジェクトがどのクラスまたは親クラスに属するかを識別するために使用される:function Class1 () {}
function Class2 () {}
var class1 = new Class1;
class1 instanceof Class1; => true
class1 instanceof Object; => true
class1 instanceof Class2; => false
alert(a); // ,a
alert(a); // undefined
var a = 'a';
// ---------- ----------
var a;
alert(a);
a = 'a';
b(); //
function b() {
alert('b');
}
c(); // c = undefined,
var c = function () {
alert('c');
}
function Class1(name) {
this.name = name;
}
Class1.prototype.setAge = function(age) {
this.age = age;
}
var class1 = new Class1('class1');
class1.setAge(10);
function Class2(time) {
Class1.call(this, 'orange');
this.time = time;
}
Class2.prototype = Object(Class1.prototype);
Class2.prototype.constructor = Class2;
var class2 = new Class2(10);
class2.setAge(20);
instanceof
の指さしfunction Animal() {
console.log(this);
}
var animal = new Animal(); // this Animal
function Animal() {
console.log(this);
}
function Dog() {
console.log(this);
Animal.call(this);
}
var dog = new Dog(); // Animal Dog this, this Dog
var obj = {
fn: function() {
console.log(this);
}
}
obj.fn();
// -------------- ---------------
var obj = new Object;
obj.fn = function() {
console.log(this);
}
obj.fn(); // this obj Object
var obj = {
fns: {
fn: function() {
console.log(this);
}
}
}
obj.fns.fn(); // this fns Object
// ---------------- ----------------
var obj = new Object;
var fns = new Object;
fns.fn = function() {
console.log(this);
}
obj.fns = fns;
obj.fns.fn();
function fn(){
console.log('outer: ' + this);
return function () {
console.log('inner: ' + this);
}
}
var closure = fn.call({}); // outer: Object
closure(); // inner: window
// this , 。
function fn() {
console.log(this);
}
fn(); // , this Global, window
this
プロトタイプ、オブジェクトにプロトタイプがありません.function Class1() { }
var instance1 = new Class1;
console.log(Class1.prototype); // Object {constructor: function}
console.log(instance1.prototype); // undefined
・prototype
属性を介したオブジェクトアクセスクラスの__proto__
:function Class1() { }
var instance1 = new Class1;
console.log(Class1.prototype); // Object {constructor: function}
console.log(instance1.__proto__); // Object {constructor: function}
console.log(Class1.prototype === instance1.__proto__); // true
・prototype
方法とコンストラクタ内の方法の違い:function Class1() {
this.setName = function (name) {
}
}
Class1.prototype.setAge = function () {
}
var instance1 = new Class1;
var instance2 = new Class1;
console.log(instance1.setName === instance2.setName); // false
console.log(instance1.setAge === instance2.setAge); // true
// ,
// , 。
・prototype
属性と構造関数の属性の違い:function Class1() {
this.name = "";
}
Class1.prototype.age = 0;
var instance1 = new Class1;
var instance2 = new Class1;
instance1.name = 'instance1';
instance2.age = 10;
console.log(instance1.age); // 0
console.log(instance2.age); // 10
console.log(instance1); // Class1 {name: "instance1"}
console.log(instance2); // Class1 {name: "", age: 10}
console.log(instance1.__proto__); // Object {age: 0, constructor: function}
console.log(instance2.__proto__); // Object {age: 0, constructor: function}
// , , , ,
// __proto__ , , prototype 。
・クラス継承中のprototype
function God() { }
God.prototype.fly = function() { }
function Parent() { }
Parent.prototype = new God;
Parent.prototype.run = function() { }
function Children() { }
Children.prototype = new Parent;
Children.prototype.walk = function() { }
var boy = new Children;
console.log(boy.__proto__); // {walk: function}
console.log(boy.__proto__.__proto__); // {run: function}
console.log(boy.__proto__.__proto__.__proto__); // {fly: function, constructor: function}
console.log(boy.fly); // function () { }
// , __proto__ ,
// , __proto__.__proto__ , undefined。