Skip to Content
JAVASCRIPT網頁應用程式設計
book

JAVASCRIPT網頁應用程式設計

by Alex MacCaw
January 2013
Intermediate to advanced
332 pages
5h 23m
Chinese
GoTop Information, Inc.
Content preview from JAVASCRIPT網頁應用程式設計
模型(Model)和資料
|
45
修正參照值的問題
如果更仔細的看一下我們目前所開發的 ORM 範例程式碼,可能會發現裡面其實潛藏了
一隻臭蟲(和參照值有關)。由於沒有在搜尋以及儲存記錄時,複製出一份新的物件實
體,所以只要修改任何屬性值,就會直接影響到原本的 asset 物件實體內容。這樣是不
對的,照理說應該只有在呼叫
update()
函式時,才能去修改 asset 物件實體的內容:
var asset = new Asset({name: "foo"});
asset.save();
// 測試一下,目前一切正常
assertEqual( Asset.find(asset.id).name, "foo" );
// 試試不透過 update() 函式,直接修改某個屬性值
asset.name = "wem";
// 糟糕!這次的測試失敗了,因為現在 asset name 已經被改成了「wem
assertEqual( Asset.find(asset.id).name, "foo" );
要修正這個問題,就得在
find()
函式裡建一個新物件。此外,每次新增、修改記錄時,
都得要複製一份新物件:
Asset.extend({
find: function(id){
var record = this.records[id];
if ( !record ) throw("Unknown record");
return record.dup();
}
});
Asset.include({
create: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

Ethan Brown, 武舎 広幸, 武舎 るみ
PHP编程:第4版

PHP编程:第4版

Kevin Tatroe, Peter MacIntyre
Strange Code

Strange Code

Ronald T. Kneusel
Perfecting Your Thinking Skills

Perfecting Your Thinking Skills

MIT Sloan Management Review

Publisher Resources

ISBN: 9789862766811