使用new關鍵字調用函數 test.js 代碼如下 function Person(name, age, obj) { var o = new Object(); o.name = name; o.age=age; o.obj=obj; o.sayName=function(){ alert(thi ...
使用new關鍵字調用函數
test.js
代碼如下
function Person(name, age, obj) {
var o = new Object();
o.name = name;
o.age=age;
o.obj=obj;
o.sayName=function(){
alert(this.name);
}
// return o;
//
this.sayName=function(){
alert(name);
}
console.log(this);
}
var friend=new Person("nike", 29, "software engineer");
console.log(friend);
friend.sayName();
study.html
代碼如下
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="en">
</head>
<body>
<script src="test.js"></script>
</body>
</html>
運行結果
修改test.js代碼
function Person(name, age, obj) {
var o = new Object();
o.name = name;
o.age=age;
o.obj=obj;
o.sayName=function(){
alert(this.name);
}
console.log(this);
return o;
}
var friend=new Person("nike", 29, "software engineer");
console.log(friend);
friend.sayName();
控制台輸出
擴展
修改test.js代碼
定義變數,存放匿名函數的地址,然後使用該變數來調用函數
var Person = function(name, age, obj) {
var o = new Object();
o.name = name;
o.age=age;
o.obj=obj;
o.sayName=function(){
alert(this.name);
}
console.log(this);
return o;
}
var friend=new Person("nike", 29, "software engineer");
console.log(friend);
friend.sayName();
控制台輸出
同上一步結果
結論
1、new js函數名稱(參數列表),會把對應的函數當做構造函數來使用,如果函數未定義返回值,預設的會返回通過構造函數(被調用函數)構造的對象實例;如果函數定義了返回值,則返回定義的返回值。
2、使用new js函數名稱(參數列表)調用函數,函數中的 this 代表了新構造的對象實例。
3、可以直接通過定義變數,存放匿名函數的地址,然後使用該變數來調用函數