zoukankan      html  css  js  c++  java
  • enyo官方开发入门教程翻译一Key Concepts之Published Properties

    Published Properties

    enyo.Object

    enyo.Object实现了enyo框架属性的公共方法(前面有一篇简单介绍enyo.Object类源码的博客)。published属性定义在enyo.kind内部的published 表中。所有声明为published的属性都自动添加了getset方法。Published属性的set方法都会触发<propertyName>Changed的可选方法。

         在下面的例子中,myValue成为“MyObject”原型的常规属性,并继承了set方法:

     1 enyo.kind({
     2     name: "MyObject",
     3     kind: enyo.Object,
     4 
     5     // declare 'published' properties
     6     published: {
     7         myValue: 3
     8     },
     9 
    10     // These methods will be automatically generated:
    11     //  getMyValue: function() ...
    12     //  setMyValue: function(inValue) ...
    13 
    14     // optional method that is called whenever setMyValue is called
    15     myValueChanged: function(inOldValue) {
    16         this.delta = this.myValue - inOldValue;
    17     }
    18 });

    执行下面的代码:

    1 myobj = new MyObject();
    2 var x = myobj.getMyValue(); // x gets 3
    3 
    4 myobj.setMyValue(7); // myValue becomes 7; myValueChanged side-effect sets delta to 4

         只有当给该属性附一个不同与原值的值时才会调用changed方法。

         Published属性作为常规属性存储在object原型中,可以直接索引或设置他们的值:

    var x = myobj.myValue;

         注意当直接设置属性的值时,并不会调用属性的changed方法。

    Object and Array Values

          在大多数情况下,published属性应该包含基本的值,如数字或字符串。如果你使用数组或object对象作为属性,检测属性变化的机制会失效。这是因为只有改变最外层的对象时JavaScript才会进行对比。一个getProperty方法返回一个object对象或一个指向内部的数组,如果你后来修改了这个object或者数组,那你就修改了kingd实例内部相同的object实例。

         你可以通过重写enyo使用的getProperty方法来解决这个问题,如使用enyo.clone方法来做一个objectarray的浅拷贝。然后,如果你把那个object传递给setProperty,它不会被当做是内部的属性,因为在内存中它是另外一个的object。然而即使两个objects拥有相同的内容当调用propertyChanged时你也会面临新的问题。

  • 相关阅读:
    ASP.NET AJAX异步调用Web Service和页面中的类方法< 收藏>
    WebCast下载工具iReaper
    ASP.NET AJAX Control Toolkit
    CodeSmith对数据库中表的操作(转)
    仿163网盘无刷新多文件上传系统<转>
    疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 操作权限《转》
    TFS2010物理迁移
    Extensible Storage Engine
    改善ASP.NET MVC应用程序第一次启动性能问题
    Windows Server 2012添加WORKGROUPS Windows Server 2008 R2服务器
  • 原文地址:https://www.cnblogs.com/waimai/p/2853671.html
Copyright © 2011-2022 走看看