javascript
js的this与java的区别_JavaScirpt(JS)的this细究
一、js中function的不同形態
js中類和函數都要通過function關鍵字來構建。
1、js中當函數名大寫時,一般是當作類來處理
function Foo(name, age) {
this.name = name;
this.age = age;
this.getName = function () {
console.log(this.name)
}
}
obj = new Foo('文州', 19); // 實例化一個對象
obj.getName(); // 輸出:文州
2、js中函數名小寫,當做函數來處理
function test() {
console.log(this);
}
// 等同于window.test,因此這里的this代指的是window
test(); // 輸出:Window
3、自執行函數,同上面等價
自執行函數,同上面等價,this也是代指的window。
(function () {
console.log(this); // 輸出:Window
})()
二、復合案例
1、類和函數結合案例
var name = '景女神';
function Foo(name, age) {
this.name = name;
this.age = age;
this.getName = function () {
console.log(this.name); // 文州
(function () {
console.log(this.name); // 景女神(打印的外部全局變量)
})()
}
}
obj = new Foo('文州', 19);
obj.getName(); // 文州 景女神
生成對象后,對象執行getName方法,此時this.name是輸出的當前對象的name,因此是輸出文州。隨后再執行自執行函數,這里的this指代的是window對象,獲取全局name變量,因此輸出景女神。
2、讓上例中自執行函數也打印對象的name
var name = '景女神';
function Foo(name, age) {
this.name = name;
this.age = age;
this.getName = function () {
console.log(this.name); // 文州
var that = this;
(function () {
console.log(that.name); // 文州(打印的外部全局變量)
})()
}
}
obj = new Foo('文州', 19);
obj.getName(); // 文州 文州
3、自動實例化案例
obj = {
name: '文州',
age: 19,
getName:function () {
console.log(this.name); // 文州
var that = this;
(function () {
console.log(that.name); // 文州
})()
}
}
obj.getName();
總結
以上是生活随笔為你收集整理的js的this与java的区别_JavaScirpt(JS)的this细究的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国元宵节有什么习俗
- 下一篇: 如何快速打开电脑计算器如何快速打开电脑计