国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

老生常談javascript的面向對象思想

2024-05-06 15:12:34
字體:
來源:轉載
供稿:網友

面向對象的三大基本特性

封裝(把相關的信息(無論數據或方法)存儲在對象中的能力)

繼承(由另一個類(或多個類)得來類的屬性和方法的能力)

多態(一個對象在不同情況下的多種形態)

定義類或對象

第一種:基于Object對象

var person = new Object();person.name = "Rose";person.age = 18;person.getName = function () { return this.name;};console.log(person.name);//Roseconsole.log(person.getName);//function () {return this.name;}console.log(person.getName());//Rose 

缺點:不能創建多個對象。

第二種:基于字面量方式

var person = { name : "Rose", age : 18 , getName : function () {  return this.name; }};console.log(person.name);//Roseconsole.log(person.getName);//function () {return this.name;}console.log(person.getName());//Rose

優點:比較清楚的查找對象包含的屬性和方法;

缺點:不能創建多個對象。

第三種:工廠模式

方式一:

function createPerson(name,age) { var object = new Object(); object.name = name; object.age = age; object.getName = function () {  return this.name; }; return object;}var person1 = createPerson("Rose",18);var person2 = createPerson("Jack",20);console.log(person1.name);//Roseconsole.log(person2.name);//Jackconsole.log(person1.getName === person2.getName);//false//重復生成函數,為每個對象都創建獨立的函數版本 

優點:可以創建多個對象;

缺點:重復生成函數getName(),為每個對象都創建獨立的函數版本。

方式二:

function createPerson(name,age) { var object = new Object(); object.name = name; object.age = age; object.getName = getName; return object;}function getName() { return this.name;}var person1 = createPerson("Rose",18);var person2 = createPerson("Jack",20);console.log(person1.name);//Roseconsole.log(person2.name);//Jackconsole.log(person1.getName === person2.getName);//true//共享同一個函數

優點:可以創建多個對象;

缺點:從語義上講,函數getName()不太像是Person對象的方法,辨識度不高。

第四種:構造函數方式

方式一:

function Person(name,age) { this.name = name; this.age = age; this.getName = function () {  return this.name; }}var person1 = new Person("Rose",18);var person2 = new Person("Jack",20);console.log(person1.name);//Roseconsole.log(person2.name);//Jackconsole.log(person1.getName === person2.getName); //false//重復生成函數,為每個對象都創建獨立的函數版本

優點:可以創建多個對象;

缺點:重復生成函數getName(),為每個對象都創建獨立的函數版本。

方式二:

function Person(name,age) { this.name = name; this.age = age; this.getName = getName ;}function getName() { return this.name;}var person1 = new Person("Rose",18);var person2 = new Person("Jack",20);console.log(person1.name);//Roseconsole.log(person2.name);//Jackconsole.log(person1.getName === person2.getName); //true//共享同一個函數             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 黔西| 衡南县| 墨竹工卡县| 页游| 罗城| 镇平县| 托里县| 南陵县| 阿图什市| 佛山市| 吉隆县| 曲阳县| 漾濞| 连州市| 桂东县| 江山市| 运城市| 海晏县| 三原县| 淅川县| 广州市| 荃湾区| 威海市| 瑞丽市| 大连市| 富平县| 金秀| 黔江区| 三台县| 诸暨市| 桐乡市| 永嘉县| 桐城市| 巴楚县| 武隆县| 万载县| 古蔺县| 古蔺县| 彭山县| 安仁县| 大竹县|