从传输中了解代码.js
understanding the code from transit.js
我只是通过过境源.js遇到了以下功能:
$.cssHooks['transit:transform'] = {
// The getter returns a `Transform` object.
get: function(elem) {
return $(elem).data('transform') || new Transform();
},
// The setter accepts a `Transform` object or a string.
set: function(elem, v) {
var value = v;
if (!(value instanceof Transform)) {
value = new Transform(value);
}
// We've seen the 3D version of Scale() not work in Chrome when the
// element being scaled extends outside of the viewport. Thus, we're
// forcing Chrome to not use the 3d transforms as well. Not sure if
// translate is affectede, but not risking it. Detection code from
// http://davidwalsh.name/detecting-google-chrome-javascript
if (support.transform === 'WebkitTransform' && !isChrome) {
elem.style[support.transform] = value.toString(true);
} else {
elem.style[support.transform] = value.toString();
}
$(elem).data('transform', value);
}
};
我理解函数的后半部分,但真的很难理解函数的初始部分,函数也可以在 git 上找到,这里 .
最初我看到的是这个,$.cssHooks['transit:transform']
那句话到底在说什么?
之后我们有下面的代码行,即 getter 和 setter 方法,
set: function(elem, v) {
但是谁在函数内部传递 elem 和 v,我没有看到任何传递?
在 jQuery 上阅读 cssHooks 的信息 cssHooks
查看源代码(搜索hooks.get
和hooks.set
)
.cssHooks
是包含 getter 和 setter 的objects
array
,将由 .css()
执行。仅此而已。
$.cssHooks['transit:transform'] = {set: function(elem,value){}, get: function(elem){}}
equal:
$.cssHooks['transit:transform'] = {};
$.cssHooks['transit:transform'].set = function(elem, value){};
$.cssHooks['transit:transform'].get = function(elem){};
$(element).css('transit:transform',value)
comes to:
$.cssHooks['transit:transform'].set(element,value)
$(element).css('transit:transform')
comes to:
$.cssHooks['transit:transform'].get(element)
$.cssHooks['transit:transform'] = {set:function(){}, get: function(){} }
{...}
是对象创建。get
和set
此刻尚未执行。
他们创造了{set:function(){}, get: function(){} }
所以,简单地说:.css()
将为钩子属性执行set
和get
函数。
如果你想知道真正的getters和setter是如何工作的:Object.defineProperty()
在 Javascript 中,您可以使用以下语法添加/访问属性:
myObject.myProperty
或使用此语法:
myObject['myProperty']
这是相同的结果
所以你的线
$.cssHooks['transit:transform']
只是意味着我们想将一个对象(原始帖子中 {} 之间的代码)存储在 'transit:transform' 属性中,该属性位于 $ 对象内的 cssHooks 属性中
这是同样的事情:
$['cssHooks']['transit:transform']
他们使用 [''] 语法的原因是 transit:transform 包含 ':' char,如果你想以这种方式访问它,这是不允许的:
$.cssHooks.transit:transform //doesn't work
编辑:
回答你的第二个问题,我不知道...您显示的代码只是"传输:转换"属性的"描述"
- Meteor JS中代码的重复使用部分
- 骨干模型默认值-todos.js示例中不必要的代码
- 为什么indexOf在这个js代码中不起作用
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- js代码从jQuery转换为原生代码
- JS代码中的减号
- 将JS函数传递给Emscripten生成的代码
- 谷歌地图Api和JS代码不工作
- HTML 5 和 3.js 代码不会在网页上显示任何内容
- Node.js:异步代码 + js 闭包的问题
- Chrome 开发者工具 - 控制台.log原生代码 JS
- 为jQuery和KNOCKOUT通用化javascript代码.js成为一个可重用的模块
- .ninnerHtml代码(JS/JQuery)无法识别html表中的动态内容
- 生成唯一的6位代码js
- 我得到了“;赋值中的左侧无效“;在我的代码(JS)中
- 更改代码(JS)中JQuery Mobile Calendar日期的状态
- 如何改进代码JS(Jquery)?一个简单的下拉列表
- 从传输中了解代码.js
- 这段代码(JS)的区别是什么?
- JavaScript倒计时计时器代码[JS]