1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openharmony-third_party_jerryscript

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
proxy_define_own_property.js 3.7 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
Gavin1012 Отправлено 4 лет назад 0c184d9
// Copyright JS Foundation and other contributors, http://js.foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Copyright 2015 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
var target = function () {};
var handler = { defineProperty (target) {
throw 42;
}, construct () {
return {};
}};
var proxy = new Proxy(target, handler);
// 22.1.2.3.8.c
Array.of.call(proxy, 5)
// test basic functionality
var g_target, g_name;
var handler = {
defineProperty: function(target, name, desc) {
g_target = target;
g_name = name;
return true;
}
}
var target = {};
var proxy = new Proxy(target, handler);
var desc = { value: 1, writable: true, configurable: true };
Object.defineProperty(proxy, "foo", desc);
assert(target === g_target);
assert("foo" === g_name);
var handler = {
defineProperty: function(target, name, desc) {
Object.defineProperty(target, name, desc);
}
}
var proxy = new Proxy(target, handler);
Object.defineProperty(proxy, "bar", desc);
assert(proxy.bar === 1);
/* TODO - remove this comment when [[GetOwnProperty]] is implemented
proxy.bar = 2;
assert(proxy.bar === 2);
*/
delete proxy.bar;
assert(proxy.bar === undefined);
/* TODO - remove this comment when [[GetOwnProperty]] is implemented
Object.defineProperty(proxy, "name", {
get() {
return this._name;
},
set(value) {
this._name = value;
}
});
proxy.name = "foo";
assert(proxy.name === "foo");
assert(target.name === "foo");
*/
// test when trap is not callable
var target = {};
var handler = {
defineProperty: 1
}
var proxy = new Proxy(target, handler);
try {
Object.defineProperty(proxy, "foo", {value: "foo"});
assert(false);
} catch (e) {
assert(e instanceof TypeError);
}
// test when trap is undefined
var target = {};
var handler = {
defineProperty: undefined
}
var proxy = new Proxy(target, handler);
var desc = { value: 1 };
Object.defineProperty(proxy, "prop1", desc);
assert(proxy.prop1 === 1);
var target2 = {};
var proxy2 = new Proxy(target2, {});
Object.defineProperty(proxy2, "prop2", desc);
assert(proxy2.prop2 === 1);
// test when invariants gets violated
var target = {};
var handler = {
defineProperty: function(target, name, desc) {
return true;
}
}
var proxy = new Proxy(target, handler);
Object.preventExtensions(target);
try {
Object.defineProperty(proxy, "foo", {value: 1});
assert(false);
} catch (e) {
assert(e instanceof TypeError);
}
var target = {};
var desc = {value: 1, writable: true, configurable: false, enumerable: true};
var proxy = new Proxy(target, handler);
try {
Object.defineProperty(proxy, "foo", desc);
assert(false);
} catch (e) {
assert(e instanceof TypeError);
}
var target = {};
var handler = {
defineProperty: function(target, name, desc) {
return true;
}
}
var proxy = new Proxy(target, handler);
Object.defineProperty(target, "foo", {value: 1, writable: false, configurable: false});
try {
Object.defineProperty(proxy, 'foo', {value: 2});
assert(false);
} catch (e) {
assert(e instanceof TypeError);
}
target.bar = "baz";
try {
Object.defineProperty(proxy, 'bar', {value: 2, configurable: false});
assert(false);
} catch (e) {
assert(e instanceof TypeError);
}

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/openharmony-third_party_jerryscript.git
git@gitlife.ru:oschina-mirror/openharmony-third_party_jerryscript.git
oschina-mirror
openharmony-third_party_jerryscript
openharmony-third_party_jerryscript
OpenHarmony-v4.0.3-Release