Vee$deleteとdeleteの違い
961 ワード
deleteはjsのオリジナルメソッドです.言語の制限のため、$deleteがvueで提供するインスタンスメソッドであることに応答するコールバックを設定できません.ソースコードは次のとおりです.
vueインスタンスの$deleteはいくつかの境界状況を処理し,配列とオブジェクトの削除を処理し,最も重要なのは変数上のobポインタが指す観察者インスタンスを取得し,depに依存するwatcher更新を通知することである.
function del (target, key) {
if (isUndef(target) || isPrimitive(target)
) {
warn(("Cannot delete reactive property on undefined, null, or primitive value: " + ((target))));
}
if (Array.isArray(target) && isValidArrayIndex(key)) {
target.splice(key, 1);
return
}
var ob = (target).__ob__;
if (target._isVue || (ob && ob.vmCount)) {
warn(
'Avoid deleting properties on a Vue instance or its root $data ' +
'- just set it to null.'
);
return
}
if (!hasOwn(target, key)) {
return
}
delete target[key];
if (!ob) {
return
}
//
ob.dep.notify();
}
vueインスタンスの$deleteはいくつかの境界状況を処理し,配列とオブジェクトの削除を処理し,最も重要なのは変数上のobポインタが指す観察者インスタンスを取得し,depに依存するwatcher更新を通知することである.