真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

好程序員web前端學(xué)習(xí)路線之Javascript面向?qū)ο?/h1>

好程序員web前端學(xué)習(xí)路線之Javascript面向?qū)ο?,面向?qū)ο笫鞘褂脤?duì)象,面向?qū)ο箝_發(fā)就是使用對(duì)象開發(fā)。

茂名ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

面向過程就是用過程的方式進(jìn)行開發(fā),面向?qū)ο笫菍?duì)面向過程的封裝

面向?qū)ο蟮娜筇匦裕?/p>

抽象性:
如果需要一個(gè)對(duì)象描述數(shù)據(jù),需要抽取這個(gè)對(duì)象的核心數(shù)據(jù),提出需要的核心屬性和方法,不在特定的環(huán)境下無法明確對(duì)象的具體意義。

狹義的抽象,也就是代碼里的抽象,就是把一些相關(guān)聯(lián)的業(yè)務(wù)邏輯分離成屬性和方法(行為),這些屬性和方法就可以構(gòu)成一個(gè)對(duì)象。

這種抽象是為了把難以理解的代碼歸納成與現(xiàn)實(shí)世界關(guān)聯(lián)的概念,比如美食這樣一個(gè)對(duì)象:屬性可以歸納出“海底撈”、“自助餐”、“蓋飯”等等;方法(行為)可以歸納出“貴”、“實(shí)惠”、“便宜”等。

var fineFood = {

???name: '海底撈',

???seat: '貴賓座',

???Number: 4,

???shout: function() {

???????console.log('貴貴貴'); //這里是你的業(yè)務(wù)邏輯代碼,這里我就簡單用這個(gè)來代替

???},

???eat: function() {

???????console.log('吃土吧,哈哈!');

???},

???Reason: function() {

???????console.log('貴是有原因');

???}

};

封裝性:
對(duì)象是將數(shù)據(jù)與功能組合在一起,簡單的理解這就是封裝

Javascript對(duì)象就是鍵值對(duì)的集合,鍵值如果是數(shù)據(jù)就稱之為屬性,如果鍵值是函數(shù)就稱之為方法。
對(duì)象就是將屬性與方法封裝起來
方法將是過程封裝起來
封裝就是將抽象出來的數(shù)據(jù)與對(duì)數(shù)據(jù)的操作封裝在一起。數(shù)據(jù)被保護(hù)在內(nèi)部,程序的其他部分只有通過授權(quán)的操作才能進(jìn)行對(duì)數(shù)據(jù)進(jìn)行操作。

?JS封裝只有兩種狀態(tài),一種是公開的,一種是私有的。

function Person(name,seatl){

???this.name=name; ????????//公開

???var seat=seat; ????????????????//私有

???this.showInfo=function(){ //公開

???????window.alert(this.name+" "+seat);

???}

???function showInfo2(){ ?????//把函數(shù)私有化

???????window.alert("你好"+this.name+" "+seat);

???}

}

var p1 = new Person('Cece', 20, 10);

window.alert(p1.name + " is " +p1.age); //Cece is undefined

p1.showInfo();//Cece 20

p1.showInfo2();//報(bào)錯(cuò)

構(gòu)造函數(shù)方式與原型方式給對(duì)象添加方法的區(qū)別:

//1.通過構(gòu)造函數(shù)方式給對(duì)象添加方法

function fineFood(name){

???this.name=name;

???this.seat=function(){

???????window.alert("有請(qǐng)"+this.name + "幾位貴賓");

???}

}

var fineFood1=new fineFood("aa");

var fineFood2=new fineFood("bb");

if(fineFood1.shout==fineFood.shout){

???window.alert("相等");

}else{

???window.alert("不相等");

}

//會(huì)輸出“不相等”

//2.通過原型方式給對(duì)象添加方法

function fineFood(name){

???this.name=name; ???

}

fineFood.prototype.shout=function(){

???window.alert("有請(qǐng)"+this.name + "幾位貴賓");

}

var fineFood1=new fineFood("aa");

var fineFood2=new fineFood("bb");

if(fineFood1.shout==fineFood2.shout){

???window.alert("相等");

}else{

???window.alert("不相等");

}

//會(huì)輸出“相等”

?通過prototype給所有的對(duì)象添加方法,但是這種方式不能去訪問類的私有變量和方法;說明通過構(gòu)造函數(shù)來分配成員方法,給每個(gè)對(duì)象分配一份獨(dú)立的代碼。這樣的弊端就是如果對(duì)象實(shí)例有很多,那函數(shù)的資源占用就會(huì)很大,而且有可能造成內(nèi)存泄漏。而原型法是大家共享同一份代碼,就不會(huì)有那種弊端。

因此,通過構(gòu)造函數(shù)添加成員方法和通過原型法添加成員方法的區(qū)別:

1).通過原型法分配的函數(shù)是所有對(duì)象共享的;

2).通過原型法分配的屬性是獨(dú)立的;

3).如果希望所有的對(duì)象使用同一個(gè)函數(shù),最好使用原型法添加方法,這樣比較節(jié)省內(nèi)存。

繼承性
函數(shù)是可以繼承另外一個(gè)對(duì)象,構(gòu)造函數(shù)實(shí)例化出來的對(duì)象除了本身成員外還有擁有被繼承對(duì)象的成員。

原型鏈?zhǔn)且环N機(jī)制,指的是 JavaScript 每個(gè)對(duì)象都有一個(gè)內(nèi)置的 proto 屬性指向創(chuàng)建它的構(gòu)造函數(shù)的 prototype(原型)屬性。

原型鏈的作用是為了實(shí)現(xiàn)對(duì)象的繼承,要理解原型鏈,需要先從函數(shù)對(duì)象、constructor、new、prototype、proto 這五個(gè)入手。

函數(shù)對(duì)象?
在 JavaScript 里,函數(shù)即對(duì)象,程序可以隨意操控它們。比如,可以把函數(shù)賦值給變量,或者作為參數(shù)傳遞給其他函數(shù),也可以給它們?cè)O(shè)置屬性,甚至調(diào)用它們的方法。

// 普通對(duì)象:

var o1 = {};

var o2 = new Object();

//函數(shù)對(duì)象:

function f1(){};

var f2 = function(){};

var f3 = new Function('string','console.log(string)');

簡單的說,凡是使用 function 關(guān)鍵字或 Function 構(gòu)造函數(shù)創(chuàng)建的對(duì)象都是函數(shù)對(duì)象。而且,只有函數(shù)對(duì)象才擁有 prototype (原型)屬性。

constructor 構(gòu)造函數(shù)?

函數(shù)還有一種用法,就是把它作為構(gòu)造函數(shù)使用。像 Object 和 Array 這樣的原生構(gòu)造函數(shù)。此外,也可以創(chuàng)建自定義的構(gòu)造函數(shù),從而自定義對(duì)象類型的屬性和方法。

function Person(name, age, job){

????this.name = name;

????this.age = age;

????this.job = job;

????this.sayName = function(){

????????console.log(this.name);

????};

}

var person1 = new Person("Stone", 28, "aa");

var person2 = new Person("Sophie", 29, "bb");

我們創(chuàng)建了一個(gè)自定義構(gòu)造函數(shù) Person(),并通過該構(gòu)造函數(shù)創(chuàng)建了兩個(gè)普通對(duì)象 person1 和 person2,這兩個(gè)普通對(duì)象均包含3個(gè)屬性和1個(gè)方法。

你應(yīng)該注意到函數(shù)名 Person 使用的是大寫字母 P。按照慣例,構(gòu)造函數(shù)始終都應(yīng)該以一個(gè)大寫字母開頭,而非構(gòu)造函數(shù)則應(yīng)該以一個(gè)小寫字母開頭。這個(gè)做法借鑒自其他面向?qū)ο笳Z言,主要是為了區(qū)別于 JavaScript 中的其他函數(shù);因?yàn)闃?gòu)造函數(shù)本身也是函數(shù),只不過可以用來創(chuàng)建對(duì)象而已。

new 操作符

要?jiǎng)?chuàng)建 Person 的新實(shí)例,必須使用 new 操作符。以這種方式調(diào)用構(gòu)造函數(shù)實(shí)際上會(huì)經(jīng)歷以下4個(gè)步驟:

  1. 創(chuàng)建一個(gè)新對(duì)象;

  2. 將構(gòu)造函數(shù)的作用域賦給新對(duì)象(因此 this 就指向了這個(gè)新對(duì)象);

  3. 執(zhí)行構(gòu)造函數(shù)中的代碼(為這個(gè)新對(duì)象添加屬性);

  4. 返回新對(duì)象。

本文標(biāo)題:好程序員web前端學(xué)習(xí)路線之Javascript面向?qū)ο?
文章地址:http://weahome.cn/article/jcgcdg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部