function Designer_Builder(designer) {
//属性
this.owner = designer || null;

解决方案 »

  1.   

    java写法
    public class Designer_Builder {
      private Object owner;  public Designer_Builder(Object designer) {
          //属性
          this.owner = designer ? designer : null;
      。
    }
      

  2.   

    。。三元表達式前面能放Object???????????????????
      

  3.   

    js中1可以表示true,Object也可以表示true。所以。
      

  4.   

    剛無聊試了下是   function Designer_Builder(designer) {
        //属性
        this.owner =(designer == null ? designer || null);
    。的結果
      

  5.   

    据说这种叫做“短路”;
    这个表达式想呈现的效果是:
    当方法里的参数是true的时候,this.owner被赋值为true;
    当参数为false的时候,this.owner被赋值为||符号后面的,也就是null;
    这就意味着函数中的参数designer必须是一个布尔值true或者false;
    可以用这个代码测试一下:
    var designer = true;
        this.owner = designer || 1;
        alert(this.owner);var designer = false;
        this.owner = designer || 1;
        alert(this.owner);楼上樱木花道大大说类似于java的三元运算符我觉得有点迷惑。
    因为这里用的是一个等号,应该是表示赋值而不是判断相等。
    所以我就自己试了一下又询问了JS达人。得出如上结论。LZ列出的代码应该想完成的逻辑是只有函数内传过来的参数为true的时候,
    owner才会有且有唯一的值true,否则该对象就是null。
      

  6.   

    你这种写法与this.owner=designer无异
    主要js里面参数可以不传东西
    比如Designer_Builder();这样调用是没问题的
    此时designer==undefined
    也就是说
    this.owner = designer || null;
    等价于
    this.owner = designer==undefined?null:designer;
    主要区分undefined和null
      

  7.   

    this.owner = designer || null;
    这不就是true或是false吗
    有什么错呢
    为了防止出现未定义而作
    旨在动态传参数
    这和java里面的方法重载是一样的
    只是javascript里面没有这个说法,所以要达到重载的目的
    只有写参数最多的那个函数
      

  8.   


       var a = "";
       a = a || null;
       alert(a); // null??
      

  9.   

    面向对象的写法 其中 owner就是Designer_Builder(相当于类了)的一个属性 
     this.owner = designer || null;意思为designer 不为null返回本身 否则返回null
    相当于java的三元运算符
      

  10.   

    this.owner = designer || null;可以理解为三元表达式
    designer || null; 在js中 第一个参数designer可以作为判断表达式 因为js中 所有数据类型都可以当布尔值用... 只要有定义的值并且不为空就是true大家测测吧,如果有错请指正
      

  11.   

    好吧。。我错了 区分undefined只是其中一种 像针对ie和firefox两种浏览器会经常出现一个浏览器对象为undefined而另外一个是有值的 就用 || 取两种来赋值
    0 空字符串 false在js中其实就是相当于java里面的false一样用 a=0或者a=false一样会弹出null
      

  12.   

    等同于 this.owner =designer != null ? designer : null;