canjs の Web サイトで次の例を機能させることができません: http://canjs.com/docs/can.Object.same.html#section_Examples
ブラウザーにロードされた次のページはエラーを受け取ります:「Uncaught TypeError: 未定義のプロパティ 'same' を読み取ることができません」
<!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 はまだ「未定義」です。2 つのオブジェクトが値レベルで等しいかどうかを確認するため、can.Object.same を使用したいと考えています。私は underscorejs を使用しませんでした。それ以外の場合は、_.isEqual を使用できます。
====セバスチャンさんの回答に加えて、requirejsを使う場合はrequire([...])のリストに「can/util/object」を追加してください。====