在读代码的时候 看到一句话, 不太明白jq中的in的用法, 谁能介绍下吗, 谢谢
var doc = document, inputs = doc.getElementsByTagName('input'),supportPlaceholder = 'placeholder' in doc.createElement('input'),
十分感谢 razorBang imingyu 的回答,
不过我还有些疑惑
我可以理解为该语句就是用于检查input中有没有定义placeholder属性吗?
input上怎么会有placeholder属性, 他不是一个dom对象吗? 又不是咱们自己定义的对象.
如何给dom对象添加placeholder属性, 即什么情况下他会返回ture?
这句话是javascript的语法, 这里的in是javascript中的关键字, 我应该搜索什么关键词可以查询到更多相关的内容.
简单来说就是测试一个对象和他的 原型链上 有没有这个属性,
这句话的意义就是创建一个input,并测试他支不支持placeholder属性,支持返回true,不支持就是false。
in
关键字并不是jquery的语法,它是js的语法,它可以理解为:
判断对象是否为
数组/对象
的元素/属性
;
如:
var arr=[1,2,3,"a","b"];
var obj={a:1,b:2};
1 in arr;//true
"a" in obj;//true
它与hasOwnProperty
有异曲同工之妙,但是又有些许差异,如:
function Person(){
this.name="Tom";
}
Person.prototype.age=20;
var p1=new Person();
"name" in p1;//true
p1.hasOwnProperty("name");//true
"age" in p1;//true
p1.hasOwnProperty("age");//false