Javascript 分配一个字符串,但返回一个对象-浏览器在发挥作用?
给定此标签:Javascript 分配一个字符串,但返回一个对象-浏览器在发挥作用?,javascript,dom,Javascript,Dom,给定此标签: <p id="myp">foo para p.style现在应该指向一个字符串,我想。但如果我随后要求使用style属性,我会得到一个对象而不是字符串: console.log(p.style); //get back an object 通常在JavaScript中,如果我给变量或对象属性分配了一个字符串,当我请求该值时,我希望该值仍然是一个字符串。那么是浏览器跳入来改变这一点,还是有JavaScript机制在起作用?p元素的样式是一个包含其所有样式的对象,您需要
<p id="myp">foo para
p.style
现在应该指向一个字符串,我想。但如果我随后要求使用style属性,我会得到一个对象而不是字符串:
console.log(p.style); //get back an object
通常在JavaScript中,如果我给变量或对象属性分配了一个字符串,当我请求该值时,我希望该值仍然是一个字符串。那么是浏览器跳入来改变这一点,还是有JavaScript机制在起作用?p元素的样式是一个包含其所有样式的对象,您需要选择所需的样式 更新:您也可以从代码段中的
cssText
获取字符串
p.style='color:red'代码>我认为这一行是:
p.style.color: 'red';
let p=document.getElementById('myp');
p、 风格='颜色:红色';
console.log(p.style.color);
console.log(p.style.cssText)代码>
p元素的样式是包含其所有样式的对象,您需要选择所需的样式
更新:您也可以从代码段中的cssText
获取字符串
p.style='color:red'代码>我认为这一行是:
p.style.color: 'red';
let p=document.getElementById('myp');
p、 风格='颜色:红色';
console.log(p.style.color);
console.log(p.style.cssText)代码>
foo para
如果您在控制台中调试HTMLElement.prototype
,您可以看到style
是一个访问器属性。当您给它赋值时,它会执行一个setter方法,该方法可以覆盖您传递的值,而不是仅仅覆盖有问题的属性。这无疑是为了确保style
属性始终是一个对象(即CSSStyleDeclaration
的实例),因为很多事情都依赖于此
要覆盖元素的style
属性,可以安全地使用p.setAttribute('style','color:red')
如果在控制台中调试HTMLElement.prototype
,则可以看到style
是一个访问器属性。当您给它赋值时,它会执行一个setter方法,该方法可以覆盖您传递的值,而不是仅仅覆盖有问题的属性。这无疑是为了确保style
属性始终是一个对象(即CSSStyleDeclaration
的实例),因为很多事情都依赖于此
要覆盖元素的style
属性,可以安全地使用p.setAttribute('style','color:red')代码>根据mozilla文档
HtmleElement.style属性用于获取和设置
元素的内联样式。获取时,它返回一个
对象,该对象包含所有样式的列表
为该元素指定值的属性
在元素的内联样式属性中定义的
参见:developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style根据mozilla文档
HtmleElement.style属性用于获取和设置
元素的内联样式。获取时,它返回一个
对象,该对象包含所有样式的列表
为该元素指定值的属性
在元素的内联样式属性中定义的
请参阅:developer.mozilla.org/en US/docs/Web/API/HTMLElement/styledocument.getElementById
返回一个,如果您查看它的原型
我们看到style
不是一个“普通”属性,而是一个getter
和
显然,这是一个超级简化的示例,但本质上它的实现类似于:
let元素={
颜色:“红色”,
获取样式(){
返回{color:this.color}
},
设置样式{
this.color=s.split(“:”)[1]
}
}
element.style='color:blue';
console.log(element.style)
document.getElementById
返回一个
我们看到style
不是一个“普通”属性,而是一个getter
和
显然,这是一个超级简化的示例,但本质上它的实现类似于:
let元素={
颜色:“红色”,
获取样式(){
返回{color:this.color}
},
设置样式{
this.color=s.split(“:”)[1]
}
}
element.style='color:blue';
console.log(element.style)代码>