Вы можете использовать этот скрипт .
*! > input[type=text] { background: #000; }
Это позволит выбрать любого родителя текстового ввода. Но подождите, еще многое. Если вы хотите, вы можете выбрать указанного родителя:
.input-wrap! > input[type=text] { background: #000; }
или выбрать его, когда он активен:
.input-wrap! > input[type=text]:focus { background: #000; }
Посмотрите этот HTML:
вы можете выбрать span.help
, когда активен input
и показать его:
.input-wrap! .help > input[type=text]:focus { display: block; }
Есть еще много возможностей; просто проверьте документацию плагина.
BTW, он работает в IE.
Оператор new
использует внутренний метод [[Construct]]
, и он в основном делает следующее:
[[Prototype]]
этого объекта, указывая на свойство Function prototype
. Если свойство функции prototype
не является объектом (примитивные значения, такие как Number, String, Boolean, Undefined или Null), вместо этого используется Object.prototype
. this
. Эквивалентная реализация того, что делает оператор new
, может (при условии, что доступен метод ECMAScript 5 Object.create
):
function NEW(f) {
var obj, ret, proto;
// Check if `f.prototype` is an object, not a primitive
proto = Object(f.prototype) === f.prototype ? f.prototype : Object.prototype;
// Create an object that inherits from `proto`
obj = Object.create(proto);
// Apply the function setting `obj` as the `this` value
ret = f.apply(obj, Array.prototype.slice.call(arguments, 1));
if (Object(ret) === ret) { // the result is an object?
return ret;
}
return obj;
}
// Example usage:
function Foo (arg) {
this.prop = arg;
}
Foo.prototype.inherited = 'baz';
var obj = NEW(Foo, 'bar');
obj.prop; // 'bar'
obj.inherited; // 'baz'
obj instanceof Foo // true
Выражение new C(arg1, arg2)
:
Предполагая, что C является функцией JavaScript (иначе вы получите сообщение об ошибке):
prototype
"C
. Примечание. Значение по умолчанию для функции prototype
для объекта - это объект (автоматически созданный при объявлении функции), с его прототипом, установленным на Object.prototype
и свойство constructor
, указывающим на функцию C
. Примечание. Терминология может вводить в заблуждение. Свойством, названным «прототипом», является не так же, как прототип объекта. Только функции имеют свойство «прототип», но все объекты имеют прототип. C
с параметром 'this
', установленным для нового объекта, и с прилагаемыми аргументами. C
возвращает объект, этот объект является результатом выражения. В противном случае вновь созданный объект является результатом выражения. Альтернативой new
в ECMAScript 5 будет использование встроенного метода Object.createObject
.
new C(arg1, arg2)
будет эквивалентен:
var obj = Object.createObject(C.prototype);
C.apply(obj, [arg1, arg2]);
Стандартный JavaScript не позволяет вам явно установить прототип объекта, поэтому Object.createObject
не может быть реализован на самом языке. Некоторые реализации позволяют это через нестандартное свойство __proto__. В этом случае new C
можно моделировать следующим образом:
var obj = {};
obj.__proto__ = C.prototype;
C.apply(obj, [arg1, arg2]);
prototype
любой функции, определенной пользователем, является объектом, который содержит свойство constructor
, которое ссылается на саму функцию и наследует ее от Object.prototype
. Этот объект инициализируется при создании объектов функции . О Object.create
, это может быть просто частично i>, эмулированное на ES3, установка свойства [[Prototype]]
может быть выполнена с помощью временного конструктора, но да, это невозможно полностью эмулировать, подробнее . Приветствия.
– CMS
20 July 2011 в 08:38
prototype
имеет смысл только для объектов Function, при использовании в качестве конструкторов и использования конструктора в моем примере реализацииnew
, было бы необходимо использовать операторnew
в любом случае .. Единственным способом было бы использовать свойство__proto__
, но оно нестандартно и оно устарело. См. этот ответ , в котором я объясняю разницу между свойствомprototype
объектов функции и свойством internal i>[[Prototype]]
, что все объекты формируют цепочку прототипов. – CMS 20 July 2011 в 07:37arguments
в этом примере должны бытьf
.. или я что-то упускаю? – max 8 July 2015 в 19:49