MozTW 討論區

各項 Mozilla 相關軟體與技術討論
現在的時間是 2025-08-22, 22:08

所有顯示的時間為 UTC + 8 小時





發表新文章 回覆主題  [ 5 篇文章 ] 
發表人 內容
 文章主題 : JavaScript回傳複數值
文章發表於 : 2007-03-06, 11:20 
離線
頭像

註冊時間: 2006-10-27, 07:29
文章: 1068
js有辦法做到回傳兩個不同型態的值嗎?
目前想到的是在回傳的變數下新增幾個物件
就像是C++的class或structure那樣
不過想不到要怎麼做

new Object()?


回頂端
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2007-03-06, 16:53 
離線
頭像

註冊時間: 2005-08-25, 19:59
文章: 1210
來自: 幻境地帶
[url=http://developer.mozilla.org/zh_tw/docs/重新介紹_JavaScript#.E8.87.AA.E8.A8.82.E7.89.A9.E4.BB.B6]A re-introduction to JavaScript: Custom Objects[/url]
代碼:
function makePerson(first, last) {
    return {
        first: first,
        last: last
    }
}
function personFullName(person) {
    return person.first + ' ' + person.last;
}
function personFullNameReversed(person) {
    return person.last + ', ' + person.first
}

> s = makePerson("Simon", "Willison");
> personFullName(s)
Simon Willison

> personFullNameReversed(s)
Willison, Simon

_________________
Add Bookmark Here ² | Charset Switcher | Hide Menubar | MClickFocusTab | Personal Titlebar


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2007-03-06, 17:36 
離線
[網站管理員]
頭像

註冊時間: 2004-09-27, 09:24
文章: 1685
legnaleurc 寫:
js有辦法做到回傳兩個不同型態的值嗎?
目前想到的是在回傳的變數下新增幾個物件
就像是C++的class或structure那樣
不過想不到要怎麼做

new Object()?

利用 Object,JS 也可以做出類似像 class 一樣的結構
function Blah(rant) {
this.string = rant;
};

Blah.prototype = {
getRant: function() {return this.string;},
showRant: function() {alert(this.string);}
};

>> var x = new Blah('ha ha!');
>> x.string
"ha ha!"
>> x.getRant()
"ha ha!"
>> x.showRant() //這時應該會 alert() 出 ha ha!

這是最最最最最最最簡單的 class 型式~假如真的想用 class 的話:
1. 如果你用 Prototype,請:
var Blah = Class.create();
Blah.prototype = {
initialize: function(rant) {this.string = rant;},
getRant: function() {return this.string;},
showRant: function() {alert(this.string);}
};
2. 其他者,請用 Dean Edwards 的 Base(+後來的更新):
引用 Base.js 以後:
var Blah = Base.extend({
constructor: function(rant) {this.string = rant;},
getRant: function() {return this.string;},
showRant: function() {alert(this.string);}
});
目前 Base 是最完整的 JS class 實作,連 inheritance 還有 method overloading 都支援了,連 Prototype 的作者都表示 Prototype 2.0 的 Class.create() 也會用 Base。

_________________
korp + korp 中文站(沒精神更新)


回頂端
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2007-03-06, 20:40 
離線
頭像

註冊時間: 2006-10-27, 07:29
文章: 1068
感謝兩位的回答
這麼看起來,原始的JavaScript並沒有class的概念嗎?


回頂端
Opera/9.10 (Windows NT 5.1; U; ja)
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2007-03-07, 13:29 
離線
[網站管理員]
頭像

註冊時間: 2004-09-27, 09:24
文章: 1685
legnaleurc 寫:
感謝兩位的回答
這麼看起來,原始的JavaScript並沒有class的概念嗎?

JavaScript 並不是像 Java 一樣的 class-based 語言,而是 prototype-based 的語言。可以實作 class 是靠 prototype 的模式。

_________________
korp + korp 中文站(沒精神更新)


回頂端
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2
 個人資料  
引用回覆  
顯示文章 :  排序  
發表新文章 回覆主題  [ 5 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 21 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
Powered by phpBB® Forum Software © phpBB Group
正體中文語系由 竹貓星球 維護製作
© moztw.org, Mozilla Foundation
MozTW,Mozilla 台灣社群