導航:首頁 > 編程語言 > js定義對象及屬性

js定義對象及屬性

發布時間:2023-05-15 19:22:06

A. js的函數為什麼也是對象,函數怎麼自定義方法和屬性<js權威指南>中說對象的方法通常是繼承的屬性

這不是很方便嗎?這樣就可以直接被函數做參數傳到需要回調的其他函數中使用,java中的介面調用需要實例化,js就不需要了呀。
函數自定義方法,其實可以把你說的函數看做java中的類。比如:
function Example(name){this.name=name}
Example.prototype.setName=function(name){
this.name=name;
return this;
}
Example.prototype.getName=function(){
return this.name;
}
new Example('name').getName();//name
new Example('name').setName('name1').getName();//name1
無論是js中的Array,String……都有類似的prototype類型描述對象,當這些類型實例化以後可直接調用prototype中定義的方法或屬性,也可覆蓋。在實例化中prototype會被簡單化成__proto__對象,可以通過console.log進行觀察。關於繼承,所有的js對象都有一個頂級的被繼承對象,Object,方法有很多,通常被提到的就是定義類型函數時給prototype賦個你想繼承的類型的實例化object,但這種方法很蠢,自己看書,搜索,實踐吧,手機打字太累了。

B. JS中的String 對象及其屬性(方法)

String 對象用於處理文本(字元串):

        參數是要存儲在 String 對象中或轉換成原始字元串的值 ;

        通過構造函數的方式也可以把數字類型轉成字元串類型; 

         let str = new String(123456);

         console.log(str);

         字面量的方式去創建一個字元串 

        let str = 'he k' 

1、屬性   length  字元串的長度 

        整個字元串(無論是內部的空格還是外部的空格)都算成長度 

        console.log(str.length); 

        字元串有length屬性 也可以被遍歷 

         for(var i=0;i<str.length;i++){

            console.log(str[i]); }

2、 charAt() 返回在指定位置的字元(註:字元串中第一個字元的下標是0) 

        如果寫的索引位置找不到對應的字元 會返回一個空字元串 

         let a = str.charAt(6);

        console.log(a); 

3、concat()    連接字元串 

         會返回一個新的拼接後的字元串 

          let newstr = str.concat('itty');

           console.log(newstr);

4、 replace()    用於在字元串中用一些字元替換另一些字元,或替換一個與正則表達式匹配的子串 ;

       replace會把第一參數(第一個參數是屬於原字元串的字元)替換成第二個參數裡面內容  

        原來的字元串不會受到影響,會返回一個新的替換後的字元串 

         let str = "hello world";

        let a = str.replace('world','kitty'); 

          console.log(a,str); 

         let str = 'abc123qwe456'; 

 5、/\d/正則表達式 代表字元串裡面的第一個數字替換成nnn 

         /\d+/ 表示匹配字元串裡面的所有數字當成一個整體替換成nnn 

         let a = str.replace(/\d+/,'nnn') 

        因為/\d+/ 這段正則不是全局的,所以只會改變第一個匹配項(123整體) 

        因為/\d/ 這段正則不是全局的,所以只會改變第一個匹配項(1) 

         let a = str.replace(/\d/,'n') 

        想讓str中所有的數字都變成n 

         正則裡面的g表示全局的意思 str.replace(/\d/g,'n') 可以把字元串裡面的每一個數字都變成n 

         正則裡面的g表示全局的意思 str.replace(/\d+/g,'n')

         把字元串裡面的所有數字當成一個整體都變成n    

         let a = str.replace(/\d/g,'n') 

         console.log(a); 

         sort會對原數組造成影響 

         let arr = [4,5,1,3]

         let newarr = arr.sort();

         console.log(arr[0]);

         let str = 'abcdefg' 

        eg: 通過索引找到e charAt方法, 再寫一個字元串 aaaa 拼接到str上 並答應出來新的字元串 ,  把abcd替換成hello 並把替換後的字元串列印出來;

         let str = 'abcdefg';

         console.log(str.charAt(4));

         let str2 = 'aaaa';

         let newstr = str.concat(str2);

        console.log(newstr);

        let rstr = str.replace('abcd','hello')

         console.log(rstr);

         function fn(){

       arguments 參數集合 是一個類數組  

        類數組不具有數組的方法 比如push 

        arguments.push(5) 

       es6裡面提供了一個方法 Array.from

       使用Array.from把類數組轉成真正的數組,這樣就可以使用數組的方法了 比如push pop 

         let arr = new Array() 

        let arr = Array.from(arguments)

        arr.push(5)

         console.log(arr); }

         fn(1,2,3,4)

6、split()  把一個字元串分割成字元串數組 

        數組轉字元串 

        let arr = [1,2,3];

        let str = arr.join('-');

        console.log(str); 

         let str = 'hello'; 

         split()不加參數 會把hello這個整體放到數組當中 

         str.split('') 把hello這個字元串 用空字元串分割 轉化為數組 

        str.split(',') 如果用字元串中不存在的字元分割 那麼還是會把整體放到數組中 

        str.split('e') 用e當作分割符 把字元串分割成數組 ['h','llo'] 

         str.split('l') 用l當作分割符 會變成空字元串 因為有兩個l 所以會分割成用['he', '', 'o'] 

        let arr = str.split('l');

        console.log(arr);

7、 indexOf()    返回某個指定的字元串值在字元串中首次出現的位置(★首次很重要) 

         let str = 'hello'

       str.charAt(1) => e 

         和數組的indexOf一樣 

        let index = str.indexOf('l');

         console.log(index);

 8、lastIndexOf()    返回一個指定的字元串值最後出現的位置 

         let str = 'hello'

         let index = str.lastIndexOf('l');

         console.log(index);

 9、 match()  可在字元串內檢索指定的值,或找到一個或多個正則表達式的匹配 

         let str = 'he123llo456'; 

         str.match('o') 使用match來檢索o 可以知道o在字元串內的信息,以數組的形式返回

        比如o所在的索引,o所在的字元串和o的長度 

        let a = str.match('o')

         console.log(a);

         /\d+/ 代表匹配一段整體的數字 

         /\d/代表匹配一個數字 g代表全局

        總體來說就是 在str字元串全局內 去查找一個一個的數字

        會以一個數組的形式方式

        不寫g 只會返回第一個  寫g 代表全局 會查找所有 

        let a = str.match(/\d+/g);

        console.log(a); 

10、 toLowerCase()    把字元串轉換為小寫 

         let str = "HELLO"

         let str2 = str.toLowerCase();

         console.log(str2);

 11、 toUpperCase()    把字元串轉換為大寫 

         let str = 'hello'

        let str2 = str.toUpperCase();

        console.log(str2);

C. js定義函數對象有幾種方式

在JavaScript中定義對象可以採用以下幾種方式:
1.基於已有對象擴充其屬性和方法
2.工廠方式
3.構造函數方式
4.原型(「prototype」)方式
5.動態原型方式
--1.基於已有對象擴充其屬性和方法
object.name="zhangsan";
object.sayName=function(name)
{
this.name=name;
alert(this.name);
}
object.sayName("lisi");
--2.工廠方式
functioncreateObject()
{
varobject=newObject();
object.username="zhangsan";
object.password="123";
object.get=function()
{
alert(this.username+","+this.password);
}
returnobject;
}
varobject1=createObject();
varobject2=createObject();
object1.get();
--採用帶參數的構造方法:
functioncreateObject(username,password)
{
varobject=newObject();
object.username=username;
object.password=password;
object.get=function()
{
alert(this.username+","+this.password);
}
returnobject;
}
varobject1=createObject("zhangsan","123");
object1.get();

D. 自定義對象

在Javascript中,除了js本身提供的自定義對象外(如Array、Date、Number等),用戶還可以自己創建對象,這種由用戶自己創建的虛敬敏對象就被稱為自定義對象。

1.2.1、「字典」結構:對象的屬性由鍵/值對的形式組成,屬性名是字元串,屬性值可以是任意類型。

1.2.2、原型繼承:Js的自定義對象可以繼承原型的屬性。

1.2.3、動態結構:可動態的增添或刪除對象的屬性

1.2.4、引用類型:js中的對象為引用類型, 即a為一個對象,b=a,改變b的話a也會被改變。我們也稱這種特性為 淺拷貝 ,這里b=a只是引用了a的地址,所以當我們改變b時,會根據地址將a也改變。

Js中創建自定義對象,主要通過三種方式:
1、對象直接量:原型為Object.prototype(也被稱為字面量)。
2、構造函數:原型為構造函數的prototype屬性。
3、Object.create():原型為傳入的第一個參數,若第一個參數為null,以Object.prototype為原型。

這種方法適合用在某個特差枝定的作用域內

構造函數的函數名用駝峰法(即首字母大寫)表示,將它與普通函數區分開來。

create方法接收兩個參數,第一個參數接收創建對象的原型,可以為null,此時對象的原型為undefined;第二個參數接收一個屬性描述符稿沒。

序列化即是調用JSON方法,將對象轉化為字元串,也可以通過反序列化將字元串轉成對象。

作用:把對象轉化成字元串。

作用:將json字元串轉成json對象

E. JavaScript中的全局對象,內置對象和預定義對象是什麼

1.全局對象是預定義的對象,作為JavaScript的全局函數和全局屬性的佔位符。
通過使用全局對象,可以訪問所有其他所有預定義的對象、函數和屬性。
全局對象不是任何對象的屬性,所以它沒有名稱。
2.內部對象是編寫自定義代碼所用語言的基礎,該代碼基於想像實現自定義功能。
JavaScript有許多將其定義為語言的內部對象。本文介紹了一些最常用的對象,
並簡要介紹了它們有哪些功能以及如何使用這些功能。
3.預定義對象這個像是select,Array等這個都是預定義對象。

F. 新手求解js的對象,屬性,方法,的關系。內有具體例子

對於例1做一些解釋:

通過varx=function(){}或者functionx(){}這種形式定義的函數不屬於任何對象,只可以在它所屬的閉包范圍內通過x()這種形式來執行.

全局對象(瀏覽器對象模型中是Window對象)所屬的函數或屬性可以省略全局對象名,即window.alert()可以簡寫為alert()


1.在例子2中這個js自帶函數和對象名的從屬關系是什麼?

indexOf這個方法是在String的原型中被定義的,indexOf只是被string對象所"繼承".


2.在教程中看過實例。自定義對象內可以定義和這個對象相關的不同屬性名。那麼在例子2中的函數是否在這個對象內被定義了。

沒有.

varx="abcd"這里x是一個string對象(即typeofx=='string'),因此它繼承了String的原型中定義的所有方法和屬性(例中indexOf是在String的原型中定義的,即String.prototype.hasOwnProperty("indexOf")).

在javascript原型鏈繼承模型中,對象可以通過"."運算符調用它本身或者原型鏈中任一對象中定義的函數.


3.函數是處理數據的。 如果問題2成立了。那麼在例2中是不是對象還定義了這個函數處理的數據的種類?

沒有.另外,問題2不成立.

javascript是弱類型的腳本語言,函數中的參數不必定義類型,甚至不用確定個數.


4.是不是像x.indexOf(「a」,0)這種使用方法的函數必須跟隨對象名?

不是的,可以通過Function.prototype.call或者Function.prototype.apply來更改函數中this的指向(可以認為是操作對象)

例如

varindexOf=String.prototype.indexOf;

indexOf.call(x,"a",0);

indexOf.apply(x,["a",0]);


5.對於圖片對不對?

圖片不完全正確.

參考下面的例子和圖片

functionPoint(x,y){

//Point擁有x和y兩個屬性

this.x=x;

this.y=y;

}

Point.prototype={

//Point從它的原型中"繼承"了distanceFromOrgin方法

distanceFromOrgin:function(p){

returnMath.sqrt((p.x-this.x)*(p.x-this.x)+(p.y-this.y)*(p.y-this.y));

}

};

//p1誕生,它擁有Point以及它的各級原型中定義的所有方法,包括Object的原型中定義的toString方法

varp1=newPoint(3,-4);

G. 利用js定義商品對象,包含:商品編號、商品名稱、商品類別、單價、生產商等屬性;還包含自定義的方法,即

function proct(no, name, type, price, factory) {
this.no = no;
this.name = name;
this.type = type;
this.price = price;
this.factory = factory;
this.print = function() {
alert(this.no);
//.........
}
}

H. JS 定義全局對象屬性

如果你的 var obj={abc:"123",def:"888" } 在一個函數塊(function)裡面,obj就不是全局變數哦,所以,如果你確定要obj定義一個全局變數,很簡單,這樣寫:

obj={abc:"123",def:"888" }

這樣,obj徹底是個全局變數了,哪裡都可以用到!

如還有疑問,請聯系我哦

閱讀全文

與js定義對象及屬性相關的資料

熱點內容
怎麼他么怎麼又網路了 瀏覽:649
java會出現內存泄露么 瀏覽:617
蘋果4s鎖屏後怎麼還顯示歌曲 瀏覽:207
鴻蒙系統文件管理哪些可以刪除 瀏覽:550
ubuntuqt創建工程沒有配置文件 瀏覽:126
網站登錄變成其他網站怎麼處理 瀏覽:202
ug數控編程學校有哪些 瀏覽:203
java圖片上傳顯示 瀏覽:402
ppt的文件名後綴 瀏覽:902
ug編程軟體下載到哪個盤 瀏覽:359
炫酷字體APP下載的文件在哪裡 瀏覽:668
廊坊哪裡有少兒編程機構 瀏覽:312
cad新文件能找回來嗎 瀏覽:951
導出手機qq文件到u盤 瀏覽:456
電腦如何打開ppt文件怎麼打開方式 瀏覽:782
魅族鎖定區文件夾 瀏覽:357
刻字cnc怎麼編程 瀏覽:182
學校的網路拓撲結構圖 瀏覽:784
收集100個pdf文件里關鍵詞 瀏覽:594
蘋果關閉4g網路設置 瀏覽:289

友情鏈接