91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用JavaScript怎么在面向對象中創建對象

發布時間:2021-03-02 15:59:55 來源:億速云 閱讀:117 作者:戴恩恩 欄目:web開發

這篇文章主要為大家詳細介紹了使用JavaScript怎么在面向對象中創建對象,文中示例代碼介紹的非常詳細,具有一定的參考價值,發現的小伙伴們可以參考一下:

JavaScript可以做什么

1.可以使網頁具有交互性,例如響應用戶點擊,給用戶提供更好的體驗。 2.可以處理表單,檢驗用戶的輸入,并提供及時反饋節省用戶時間。 3.可以根據用戶的操作,動態的創建頁面。 4使用JavaScript可以通過設置cookie存儲在瀏覽器上的一些臨時信息。

創建對象的幾種常用方式

1.使用Object或對象字面量創建對象

2.工廠模式創建對象

3.構造函數模式創建對象

4.原型模式創建對象

1.使用Object或對象字面量創建對象

使用object

var student = new Object();
student.name = "easy";
student.age = "20";

使用字面量

var sutdent = {
 name : "easy",
 age : 20
};

2.工廠模式創建對象

function createStudent(name, age) {
 var obj = new Object();
 obj.name = name;
 obj.age = age;
 return obj;
}
var student1 = createStudent("easy1", 20);
var student2 = createStudent("easy2", 20);
...
var studentn = createStudent("easyn", 20);

3.構造函數模式創建對象

在上面創建Object這樣的原生對象的時候,我們就使用過其構造函數

var obj = new Object();

在創建原生數組Array類型對象時也使用過其構造函數:

var arr = new Array(10); //構造一個初始長度為10的數組對象

我們首先了解一下構造函數和普通函數有什么區別。

1、實際上并不存在創建構造函數的特殊語法,其與普通函數唯一的區別在于調用方法。對于任意函數,使用new操作符調用,那么它就是構造函數;不使用new操作符調用,那么它就是普通函數。

2、按照慣例,我們約定構造函數名以大寫字母開頭,普通函數以小寫字母開頭,這樣有利于顯性區分二者。例如上面的new Array(),new Object()。

3、使用new操作符調用構造函數時,會經歷(1)創建一個新對象;(2)將構造函數作用域賦給新對象(使this指向該新對象);(3)執行構造函數代碼;(4)返回新對象;4個階段。

ok,了解了構造函數和普通函數的區別之后,我們使用構造函數將工廠模式的函數重寫,并添加一個方法屬性:

function Student(name, age) {
 this.name = name;
 this.age = age;
 this.alertName = function(){
  alert(this.name)
 };
}
function Fruit(name, color) {
 this.name = name;
 this.color = color;
 this.alertName = function(){
  alert(this.name)
 };
}

這樣我們再分別創建Student和Fruit的對象

var v1 = new Student("easy", 20);
var v2 = new Fruit("apple", "green");

這時我們再來用instanceof操作符來檢測以上對象類型就可以區分出Student以及Fruit了:

alert(v1 instanceof Student); //true
alert(v2 instanceof Student); //false
alert(v1 instanceof Fruit); //false
alert(v2 instanceof Fruit); //true
alert(v1 instanceof Object); //true 任何對象均繼承自Object
alert(v2 instanceof Object); //true 任何對象均繼承自Object

可以將上面的函數簡化:Student和Fruit對象中共有同樣的方法移到構造函數外部

function Student(name, age) {
 this.name = name;
 this.age = age;
}
function Fruit(name, color) {
 this.name = name;
 this.color = color;
};
function alertName() {
 alert(this.name);
}

我們通過將alertName()函數定義為全局函數,這樣對象中的alertName屬性則被設置為指向該全局函數的指針。由此stu1和stu2共享了該全局函數,解決了內存浪費的問題

但是,通過全局函數的方式解決對象內部共享的問題,終究不像一個好的解決方法。如果這樣定義的全局函數多了,我們想要將自定義對象封裝的初衷便幾乎無法實現了。

更好的方案是通過原型對象模式來解決。

4.原型的模式創建對象

原型鏈甚至原型繼承,是整個JS中最難的一部分也是最不好理解的一部分,在這里由于我們課程定位的原因,如果對js有興趣的同學,可以去查閱一下相關JS原型的一些知識點。

function Student() {
  this.name = 'easy';
  this.age = 20;
}
Student.prototype.alertName = function(){
  alert(this.name);
};
var stu1 = new Student();
var stu2 = new Student();
stu1.alertName(); //easy
stu2.alertName(); //easy
alert(stu1.alertName == stu2.alertName); //true 二者共享同一函數

以上就是億速云小編為大家收集整理的使用JavaScript怎么在面向對象中創建對象,如何覺得億速云網站的內容還不錯,歡迎將億速云網站推薦給身邊好友。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

剑河县| 怀安县| 四子王旗| 新民市| 饶河县| 九江市| 双牌县| 邵阳市| 雅安市| 延吉市| 临西县| 鹿邑县| 永清县| 什邡市| 商洛市| 阿拉尔市| 海丰县| 达拉特旗| 邵阳县| 醴陵市| 阿瓦提县| 甘南县| 阜康市| 霍林郭勒市| 科技| 太湖县| 邳州市| 进贤县| 灵宝市| 滁州市| 汤原县| 观塘区| 永胜县| 安阳市| 武义县| 乌兰县| 鄄城县| 沙湾县| 蛟河市| 大方县| 古浪县|