如何包含/导入canjs的can.Object,以便can.Object.same可以使用?

时间:2014-06-20 01:39:38

标签: canjs canjs-plugin

我无法在canjs网站上做以下示例工作: http://canjs.com/docs/can.Object.same.html#section_Examples

在浏览器中加载的以下页面将出现错误:'未捕获的TypeError:无法读取属性'相同'的未定义'

<!DOCTYPE>
<html>
<head>
<title></title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.js"></script>
    <script src="http://canjs.com/release/latest/can.jquery.js"></script>
</head>
<body>
<script>

    can.Object.same({ name: "Justin" }, { name: "JUSTIN" }) //-> false
    // ignore the name property
    can.Object.same({ name: "Brian" }, { name: "JUSTIN" }, { name: null }) //-> true
    // ignore case
    can.Object.same({ name: "Justin" }, { name: "JUSTIN" }, { name: "i" }) //-> true
    // deep rule
    can.Object.same({ person: { name: "Justin"} },
    { person: { name: "JUSTIN"} },
    { person: { name: "i"} }) //-> true
    // supplied compare function
    can.Object.same({ age: "Thirty" },
    { age: 30 },
    { age: function (a, b) {
        if (a == "Thirty") {
            a = 30
        }
        if (b == "Thirty") {
            b = 30
        }
        return a === b;
    } 
    })      //-> true
</script>
</body>
</html>

我也尝试使用requirejs来使用canjs:

var can = requirejs("can");

但它是一样的,can.Object仍然是'undefined'。 我想使用can.Object.same,因为检查两个对象在值级别是否相等。我没有使用underscorejs,否则我可以使用_.isEqual。

====除了Sebastian的回答之外,如果使用requirejs,请将“can / util / object”添加到require([...])的列表中。====

1 个答案:

答案 0 :(得分:1)

您需要将can.Object作为额外脚本加载:

http://canjs.com/release/latest/can.object.js

需要在Can之后加载。