javascript - 什么是新的 Transform()?

标签 javascript jquery

<分区>

我刚刚浏览了 transit.js 上的代码 here .我遇到了以下代码行:

$.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);
    }
};

现在我通过查看 jQuery 文档找到了 $.cssHooks 部分 here ,但我不太明白的是 Transform() 到底是什么?

注意:我不是在问什么是new

最佳答案

Transform 是一个用作构造函数的函数,它是 defined here :

// ## Transform class
// This is the main class of a transformation property that powers
// `$.fn.css({ transform: '...' })`.
//
// This is, in essence, a dictionary object with key/values as `-transform`
// properties.
//
//     var t = new Transform("rotate(90) scale(4)");
//
//     t.rotate             //=> "90deg"
//     t.scale              //=> "4,4"
//
// Setters are accounted for.
//
//     t.set('rotate', 4)
//     t.rotate             //=> "4deg"
//
// Convert it to a CSS string using the `toString()` and `toString(true)` (for WebKit)
// functions.
//
//     t.toString()         //=> "rotate(90deg) scale(4,4)"
//     t.toString(true)     //=> "rotate(90deg) scale3d(4,4,0)" (WebKit version)
//
function Transform(str) {
    if (typeof str === 'string') { this.parse(str); }
    return this;
}

Transform.prototype = {
    // ### setFromString()
    // Sets a property from a string.
    //
    //     t.setFromString('scale', '2,4');
    //     // Same as set('scale', '2', '4');
    //
    ...

所以调用时:

var transform = new Transform();

Transform 的实例将存储在transform 中,它具有Transform.prototype 提供的方法。

关于javascript - 什么是新的 Transform()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33735053/

相关文章:

javascript - Angular/ ionic : update view with ng-repeat binds to an array

jquery - 为鼠标悬停时的图像创建叠加层

javascript - 编写简单的 JQuery 插件

javascript - 如何根据数字写入多个数组?

javascript - 如何将焦点从 iframe 中移出?

javascript - 在 Metro App 中实现计时器应用程序

javascript - 将 .txt 文件中的坐标放入 Javascript 数组

javascript - 到达 iFrame 底部时不滚动网页

Javascript/JQuery 在 Chrome 和 Firefox 中突然停止工作,但在 Safari 中仍然可以工作

javascript - Google 折线图 - 显示为 2K 的年份