Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
我們完成亞馬遜新賬號(hào)的注冊(cè)的時(shí)候,大家最好先去設(shè)置賬號(hào)的一些基本的要求,其中包含賬戶(hù)信息、通知首選項(xiàng)、登錄設(shè)置、退貨設(shè)置、禮品選項(xiàng)、配送設(shè)置、稅務(wù)設(shè)置、用戶(hù)權(quán)限、亞馬遜物流、您的政策和信息,這些選項(xiàng)需要我們自己了解并按自己意愿去做設(shè)置。一般需要我們一注冊(cè)完就需要操作的是登錄設(shè)置里面的兩步驗(yàn)證、收款方式以及配送模板設(shè)置。
一、兩步驗(yàn)證
操作步驟:設(shè)置》登錄設(shè)置》高級(jí)安全設(shè)置—編輯
或者使用您的用戶(hù)名和密碼登錄您的賬戶(hù)。
然后點(diǎn)擊“高級(jí)安全設(shè)置”的“編輯”之后,點(diǎn)擊“開(kāi)始”
二、收款方式
操作步驟:設(shè)置》賬戶(hù)信息》存款方式—編輯,以美國(guó)站站為例:
三、配送模板設(shè)置
操作步驟:設(shè)置》配送設(shè)置》編輯模板—編輯,以美國(guó)站站為例:
一般建議新賣(mài)家不要勾選快遞配送方式,因?yàn)榭缇车奈锪骱茈y達(dá)到快遞配送的實(shí)效(2-3天),這也是很多新賣(mài)家經(jīng)常犯的錯(cuò)誤。還有就是建議偏遠(yuǎn)地區(qū)也不要勾選,因?yàn)榭梢耘渌瓦_(dá)到的物流方式有限有些根本無(wú)法派送,很容易造成售后問(wèn)題,請(qǐng)慎選。
這三項(xiàng)是我自己認(rèn)為比較重要的幾點(diǎn),在賬號(hào)一注冊(cè)完就會(huì)去設(shè)置的。在以后的操作中可能還會(huì)用到亞馬遜物流設(shè)置合倉(cāng)的操作和退貨設(shè)置填寫(xiě)退貨的地址等等。
【CSDN 編者按】從1995年開(kāi)始,本文作者Dr.Axel Rauschmayer就專(zhuān)門(mén)從事JavaScript和Web開(kāi)發(fā),已經(jīng)有30多年了。2010年,他獲得慕尼黑大學(xué)信息學(xué)博士學(xué)位。自2011年以來(lái),他一直在2ality.com寫(xiě)博客,并寫(xiě)了幾本關(guān)于JavaScript的書(shū),比如《JavaScript for impatient programmers》、《Deep JavaScript: Theory and techniques》等。今天這篇文章就來(lái)自于他的博客,介紹了在JavaScript命名沖突時(shí),現(xiàn)有代碼如何強(qiáng)制對(duì)提議的功能進(jìn)行重命名。
不斷發(fā)展的JavaScript:不要破壞web!
JavaScript的一個(gè)發(fā)展核心原則就是"不要破壞Web":在將新特性添加到語(yǔ)言中后,所有現(xiàn)有代碼都必須能夠繼續(xù)運(yùn)行。
這樣有一個(gè)壞處,就是不能從語(yǔ)言中刪除現(xiàn)有的quirks。但這樣做益處多多,比如舊的代碼可以繼續(xù)運(yùn)行,而且升級(jí)到新的ECMAScript版本很簡(jiǎn)便等等。
在為新特征(如方法名稱(chēng))選擇名稱(chēng)時(shí),需要進(jìn)行一個(gè)重要的測(cè)試,即在瀏覽器的nightly版本(早期預(yù)發(fā)布版本)中添加該特征,并檢查是否有任何網(wǎng)站出現(xiàn)錯(cuò)誤。
接下來(lái)將介紹過(guò)去案例中的的四個(gè)沖突源,當(dāng)產(chǎn)生這四種沖突時(shí),就必須重命名特征。
沖突源1:向內(nèi)置原型添加方法
在JavaScript中,我們可以通過(guò)改變其原型來(lái)為內(nèi)置值添加方法:
// Creating a new Array method
Array.prototype.myArrayMethod = function () {
return this.join('-');
};
assert.equal(
['a', 'b', 'c'].myArrayMethod(), 'a-b-c'
);
// Creating a new string method
String.prototype.myStringMethod = function () {
return '?' + this + '!';
};
assert.equal(
'Hola'.myStringMethod(), '?Hola!'
);
神奇的是,語(yǔ)言可以通過(guò)這種方式改變。這種運(yùn)行時(shí)的修改被稱(chēng)為猴子補(bǔ)丁(monkey patch)。
什么是猴子補(bǔ)丁?
如果我們給內(nèi)置原型添加方法,我們就是在運(yùn)行時(shí)修改一個(gè)軟件系統(tǒng)。這樣的修改被稱(chēng)為猴子補(bǔ)丁。簡(jiǎn)單來(lái)說(shuō),對(duì)其含義有兩種可能的解釋。
這個(gè)叫法起源于Zope框架,人們?cè)谛拚齔ope的Bug的時(shí)候經(jīng)常在程序后面追加更新部分,這些被稱(chēng)作是“雜牌軍補(bǔ)丁(guerilla patch)”,后來(lái)guerilla就漸漸的寫(xiě)成了gorllia((猩猩),再后來(lái)就寫(xiě)了monkey(猴子),所以猴子補(bǔ)丁的叫法是這么莫名其妙的得來(lái)的。
另一種說(shuō)法是,它指的是搞亂(monkeying about)代碼。
反對(duì)改變內(nèi)置原型的原因
對(duì)任何類(lèi)型的全局命名,都會(huì)存在名稱(chēng)沖突的風(fēng)險(xiǎn)。如果有解決沖突的機(jī)制,就能規(guī)避風(fēng)險(xiǎn)。例如:
全局模塊是通過(guò)裸模塊指定器或URLs來(lái)識(shí)別的。前者之間的名稱(chēng)沖突可以通過(guò)npm注冊(cè)表來(lái)解決。后者之間的名稱(chēng)沖突可以通過(guò)域名注冊(cè)處來(lái)解決。
可以通過(guò)將符號(hào)添加到JavaScript中,以避免方法之間的名稱(chēng)沖突。例如,任何對(duì)象都可以通過(guò)添加一個(gè)鍵為.NET的方法而成為可迭代的。由于每個(gè)符號(hào)都是唯一的,所以這個(gè)鍵永遠(yuǎn)不會(huì)與任何其他屬性鍵.Symbol.iterator
發(fā)生沖突。
然而,帶有字符串鍵的方法會(huì)導(dǎo)致名稱(chēng)沖突:
不同的庫(kù)可能會(huì)對(duì)他們添加到.Array.prototype
的方法使用相同的名字。
如果一個(gè)名字已經(jīng)被某個(gè)庫(kù)使用了,那么這個(gè)名稱(chēng)就不能用于命名JavaScript標(biāo)準(zhǔn)庫(kù)的一個(gè)新特性。
具有諷刺意味的是,謹(jǐn)慎地添加一個(gè)方法可能會(huì)適得其反:
if (!Array.prototype.libraryMethod) {
Array.prototype.libraryMethod = function () { /*...*/ };
}
我們會(huì)檢查一個(gè)方法是否已經(jīng)存在。如果沒(méi)有,我們就添加它。
如果我們要實(shí)現(xiàn)一個(gè)polyfill(模擬原生Web平臺(tái)功能),將新的JavaScript方法添加到不支持它的引擎中,那么這個(gè)技術(shù)就能發(fā)揮作用。(順便說(shuō)一下,這是修改內(nèi)置原型的一個(gè)合法用例。也許是唯一的一個(gè))。
然而,如果我們對(duì)一個(gè)普通庫(kù)的方法使用這種技術(shù),然后JavaScript獲取具有相同名稱(chēng)的方法,那么這兩種實(shí)現(xiàn)的工作方式就不一樣了,并且使用庫(kù)方法的所有代碼在使用內(nèi)置方法時(shí)都會(huì)中斷。
必須更改名稱(chēng)的原型方法示例
ES6的方法最初是與JavaScript框架MooTools(錯(cuò)誤報(bào)告).String.prototype.includes().contains()
全局添加的方法相沖突。
ES2016的方法最初是與MooTools(錯(cuò)誤報(bào)告 ).Array.prototype.includes().contains()
添加的方法相沖突。
ES2019的方法最初是和MooTools(錯(cuò)誤報(bào)告, 博客文章).Array.prototype.flat().flatten()
相沖突。
修改內(nèi)置原型并不總是糟糕的
你可能會(huì)對(duì)MooTools的創(chuàng)建者的粗心大意感到疑惑。但是,向內(nèi)置原型添加方法并不總是糟糕的。在ES3(1999年12月)和ES5(2009年12月)之間,JavaScript是一種停滯不前的語(yǔ)言。MooTools和Prototype等框架改進(jìn)了它。這些方法的缺點(diǎn)只有在JavaScript的標(biāo)準(zhǔn)庫(kù)再次增加之后才會(huì)凸顯出來(lái)。
ES2022的方法最初是.NET的。因?yàn)橐韵聨?kù)檢查屬性以確定對(duì)象是否是一個(gè)HTML集合(而不是一個(gè)數(shù)組),所以它必須被重新命名:Magic360、YUI 2、YUI 3.Array.prototype.at().item().item
自ES2020以來(lái),我們可以通過(guò)globalThis
訪(fǎng)問(wèn)全局對(duì)象。Node.js一直使用該名稱(chēng)來(lái)實(shí)現(xiàn)此目的。最初的計(jì)劃是為所有平臺(tái)標(biāo)準(zhǔn)化該名稱(chēng).global
然而,以下模式經(jīng)常被用來(lái)確定當(dāng)前平臺(tái):
if (typeof global !== 'undefined') {
// We are not running on Node.js
}
如果瀏覽器也有一個(gè)名為.global的全局變量,這種模式(以及類(lèi)似的模式)就會(huì)失效。因此,標(biāo)準(zhǔn)化的名稱(chēng)被改為.
global
globalThis
。
with
語(yǔ)句with
語(yǔ)句長(zhǎng)期以來(lái),人們一直不鼓勵(lì)使用JavaScript的with語(yǔ)句,甚至在ES5中引入的嚴(yán)格模式中也被定為非法。在其他地方,嚴(yán)格模式在ECMAScript模塊中是活躍的。
該語(yǔ)句將一個(gè)對(duì)象的屬性變成局部變量:with
cons t myObject = {
ownProperty: 'yes',
};
with (myObject) {
// Own properties become local variables
assert.equal(
ownProperty, 'yes'
);
// Inherited properties become local variables, too
assert.equal(
typeof toString, 'function'
);
}
由with語(yǔ)句引起的沖突
框架Ext.js使用的代碼與下面的片段有些相似點(diǎn):
function myFunc(values) {
with (values) {
console.log(values); // (A)
}
}
myFunc([]); // (B)
當(dāng)ES6方法被添加到JavaScript中時(shí),如果用Array(B行)來(lái)調(diào)用它,它就會(huì)失效。該語(yǔ)句將Array的所有屬性變成了局部變量。其中一個(gè)是繼承的屬性。因此,A行中的語(yǔ)句已記錄,不再是參數(shù)(錯(cuò)誤報(bào)告1,錯(cuò)誤報(bào)告2)
Array.prototype.values()myFunc()withvalues.valuesArray.prototype.values
value
Unscopables:防止with導(dǎo)致的沖突
公共符號(hào)Symbol.unscopables
允許對(duì)象隱藏語(yǔ)句中的某些屬性。它只在標(biāo)準(zhǔn)庫(kù)中使用一次,對(duì)于Array.prototype:with
assert.deepEqual(
Array.prototype[Symbol.unscopables],
{
__proto__: ,
at: true,
copyWithin: true,
entries: true,
fill: true,
find: true,
findIndex: true,
flat: true,
flatMap: true,
includes: true,
keys: true,
values: true,
}
);
以上提出了JavaScript結(jié)構(gòu)與現(xiàn)有代碼發(fā)生名稱(chēng)沖突的四種方式:
向內(nèi)置原型添加方法
檢查屬性是否存在
檢查全局變量是否存在
創(chuàng)建局部變量with
沖突的某些來(lái)源很難預(yù)測(cè),但存在以下一些一般規(guī)則:
不要更改全局?jǐn)?shù)據(jù)。
避免檢查是否存在全局?jǐn)?shù)據(jù)。
請(qǐng)注意,內(nèi)置值將來(lái)可能會(huì)獲得其他屬性(自己的或繼承的屬性)。
對(duì)于庫(kù)來(lái)說(shuō),為JavaScript值提供功能的最安全方法是通過(guò)函數(shù)。如果JavaScript得到一個(gè)pipe operator,我們也可以像方法一樣使用它們。
參考資料:https://2ality.com/2022/03/naming-conflicts.html
《新程序員001-004》全面上市,對(duì)話(huà)世界級(jí)大師,報(bào)道中國(guó)IT行業(yè)創(chuàng)新創(chuàng)造
常和電腦打交道的朋友,一定有過(guò)這樣的難題,在網(wǎng)上查資料找文章,復(fù)制文章的內(nèi)容才發(fā)現(xiàn)必須要注冊(cè)登錄才支持,也太麻煩了吧!
這種限制復(fù)制文字的網(wǎng)頁(yè),其實(shí)是用JavaScripty代碼來(lái)實(shí)現(xiàn)限制復(fù)制的,當(dāng)然,解鈴還須系鈴人,今天教大家一串代碼接觸限制。
首先在我們需要復(fù)制內(nèi)容的網(wǎng)頁(yè)中的地址欄中輸入:
javascript:void($={});
然后按下回車(chē)鍵Enter,然后網(wǎng)頁(yè)的內(nèi)容就可以支持任意復(fù)制啦!
同樣方法不僅支持提取網(wǎng)頁(yè)中的文字,還能夠提取書(shū)本、圖片上面的文字,在書(shū)本中遇到需要摘抄到電腦的內(nèi)容,也可以輕松提取,方法如下:
我們打開(kāi)迅捷PDF轉(zhuǎn)換器工具,在特色功能中找到"圖片轉(zhuǎn)文字",然后將網(wǎng)頁(yè)的圖片截圖,或者書(shū)本中的內(nèi)容拍照上傳。
點(diǎn)擊轉(zhuǎn)換之后即可將文字輸出到Word文檔中,我們一起來(lái)看看效果:
還有一種方法,在網(wǎng)頁(yè)中【右擊】,然后點(diǎn)擊【查看源文件】,接下來(lái)在源文件中找到對(duì)應(yīng)的文字內(nèi)容復(fù)制即可。
掌握好這3種方法,以后不用擔(dān)心網(wǎng)頁(yè)上的文字無(wú)法復(fù)制了
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。