100分,三个基础js问题

bsnry 2017-08-24 06:07:55
  var Cat = {
    createNew: function(){
      var cat = {};
      cat.name = "大毛";
      cat.makeSound = function(){ console.log("喵喵喵"); };
      return cat;
    }
  };


问题1:var cat={}; 是替代 var cat = new Object吗?

问题2:

var cat1 = Cat.createNew(); //返回了cat,那么是深拷贝?
cat1.makeSound();


问题3:我 什么时候需要做一下操作?


if(Cat["name"] == undefined && Cat["name"] == "")
console.log("---------");

目的是什么?




...全文
311 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Love_云宝儿 2017-08-26
  • 打赏
  • 举报
回复
水一贴
letMeAlone_ 2017-08-26
  • 打赏
  • 举报
回复
引用 7 楼 bsnry 的回复:
再请教一个问题:
var Cat2 = {
    createNew: function () {
        var cat = {};
        cat.name = "大毛";
        cat.name2;  //这里是undefined还是null? 
        cat.makeSound = function () { console.log("喵喵喵"); };
        return cat;
    },

    toString: function () {
        return "dxxxxddd";
    }

  };
为什么函数和函数之间必须用逗号隔开? 我用分号立即报错。 这是遵循什么原则? [quote=引用 6 楼 a250758092 的回复:] [quote=引用 4 楼 bsnry 的回复:] [quote=引用 3 楼 a250758092 的回复:] 1 、 { } 本身就是一个JSON对象,只不过内容是空的, 相当于初始化 2、 至于深拷贝还是浅拷贝是用于两个对象之间的“复制”这种说法,例子中只是此处只是返回了一个cat对象,不存在拷贝这种说法 3、 if(Cat["name"] == undefined && Cat["name"] == "") console.log("---------"); 这样做是为了确保cat对象的name属性被初始化,如果name没有被赋值的话则默认它为空值,一般的话在createNew这个函数中会有参数复制给name

var Cat = {
    createNew: function(name){
      var cat = {};
      cat.name=name;
      cat.makeSound = function(){ console.log("喵喵喵"); };
      return cat;
    }
  };
console.log(Cat.createNew().name);//如果此处不传参数则会输出undefined,所以需要加判断语句,将它初始为 ""
,如果name没有被赋值的话则默认它为空值,一般的话在createNew这个函数中会有参数复制给name 你确定是空值, 我举个例子吧:
var Cat2 = {
    createNew: function () {
        var cat = {};
        cat.name = "大毛";
        cat.name2;  //这里是undefined还是null? 
        cat.makeSound = function () { console.log("喵喵喵"); };
        return cat;
    },

    toString: function () {
        return "dxxxxddd";
    }

  };
cat.name2; //这里是undefined还是null? [/quote] Cat["name"] == undefined && Cat["name"] == "" 我说的是这句代码,如果没有赋值,意味着这个变量是undefined,所以会执行后面那句,将它的值默认赋值为空【另外我现在才看到后面的是==不是=】,并不是说如果没有赋值它的默认值为空[/quote] 你好,我明白了你的意思,阁下的意思是说: 假设createNew里没有申明name这个属性,那么 Cat["name"] == undefined && Cat["name"] = "" 执行完== 后,再执行 =,这样就会添加属性,且赋值为空字符串。, 对否 ? [/quote] 对的,实际上A&&B 跟if(A){B}是一个道理,另外 为什么在两个function之间用的是逗号而不是分好,是因为Cat是一个JSON对象,它需要符合JSON的格式 {a:'a',b:'b'} 中间的是用分好隔开,key和value对应,只不过这里的value是一个函数而已
bsnry 2017-08-26
  • 打赏
  • 举报
回复
再请教一个问题:
var Cat2 = {
    createNew: function () {
        var cat = {};
        cat.name = "大毛";
        cat.name2;  //这里是undefined还是null? 
        cat.makeSound = function () { console.log("喵喵喵"); };
        return cat;
    },

    toString: function () {
        return "dxxxxddd";
    }

  };
为什么函数和函数之间必须用逗号隔开? 我用分号立即报错。 这是遵循什么原则?
引用 6 楼 a250758092 的回复:
[quote=引用 4 楼 bsnry 的回复:] [quote=引用 3 楼 a250758092 的回复:] 1 、 { } 本身就是一个JSON对象,只不过内容是空的, 相当于初始化 2、 至于深拷贝还是浅拷贝是用于两个对象之间的“复制”这种说法,例子中只是此处只是返回了一个cat对象,不存在拷贝这种说法 3、 if(Cat["name"] == undefined && Cat["name"] == "") console.log("---------"); 这样做是为了确保cat对象的name属性被初始化,如果name没有被赋值的话则默认它为空值,一般的话在createNew这个函数中会有参数复制给name

var Cat = {
    createNew: function(name){
      var cat = {};
      cat.name=name;
      cat.makeSound = function(){ console.log("喵喵喵"); };
      return cat;
    }
  };
console.log(Cat.createNew().name);//如果此处不传参数则会输出undefined,所以需要加判断语句,将它初始为 ""
,如果name没有被赋值的话则默认它为空值,一般的话在createNew这个函数中会有参数复制给name 你确定是空值, 我举个例子吧:
var Cat2 = {
    createNew: function () {
        var cat = {};
        cat.name = "大毛";
        cat.name2;  //这里是undefined还是null? 
        cat.makeSound = function () { console.log("喵喵喵"); };
        return cat;
    },

    toString: function () {
        return "dxxxxddd";
    }

  };
cat.name2; //这里是undefined还是null? [/quote] Cat["name"] == undefined && Cat["name"] == "" 我说的是这句代码,如果没有赋值,意味着这个变量是undefined,所以会执行后面那句,将它的值默认赋值为空【另外我现在才看到后面的是==不是=】,并不是说如果没有赋值它的默认值为空[/quote] 你好,我明白了你的意思,阁下的意思是说: 假设createNew里没有申明name这个属性,那么 Cat["name"] == undefined && Cat["name"] = "" 执行完== 后,再执行 =,这样就会添加属性,且赋值为空字符串。, 对否 ?
letMeAlone_ 2017-08-25
  • 打赏
  • 举报
回复
引用 4 楼 bsnry 的回复:
[quote=引用 3 楼 a250758092 的回复:] 1 、 { } 本身就是一个JSON对象,只不过内容是空的, 相当于初始化 2、 至于深拷贝还是浅拷贝是用于两个对象之间的“复制”这种说法,例子中只是此处只是返回了一个cat对象,不存在拷贝这种说法 3、 if(Cat["name"] == undefined && Cat["name"] == "") console.log("---------"); 这样做是为了确保cat对象的name属性被初始化,如果name没有被赋值的话则默认它为空值,一般的话在createNew这个函数中会有参数复制给name

var Cat = {
    createNew: function(name){
      var cat = {};
      cat.name=name;
      cat.makeSound = function(){ console.log("喵喵喵"); };
      return cat;
    }
  };
console.log(Cat.createNew().name);//如果此处不传参数则会输出undefined,所以需要加判断语句,将它初始为 ""
,如果name没有被赋值的话则默认它为空值,一般的话在createNew这个函数中会有参数复制给name 你确定是空值, 我举个例子吧:
var Cat2 = {
    createNew: function () {
        var cat = {};
        cat.name = "大毛";
        cat.name2;  //这里是undefined还是null? 
        cat.makeSound = function () { console.log("喵喵喵"); };
        return cat;
    },

    toString: function () {
        return "dxxxxddd";
    }

  };
cat.name2; //这里是undefined还是null? [/quote] Cat["name"] == undefined && Cat["name"] == "" 我说的是这句代码,如果没有赋值,意味着这个变量是undefined,所以会执行后面那句,将它的值默认赋值为空【另外我现在才看到后面的是==不是=】,并不是说如果没有赋值它的默认值为空
Go 旅城通票 2017-08-25
  • 打赏
  • 举报
回复
bsnry 2017-08-25
  • 打赏
  • 举报
回复
引用 3 楼 a250758092 的回复:
1 、 { } 本身就是一个JSON对象,只不过内容是空的, 相当于初始化 2、 至于深拷贝还是浅拷贝是用于两个对象之间的“复制”这种说法,例子中只是此处只是返回了一个cat对象,不存在拷贝这种说法 3、 if(Cat["name"] == undefined && Cat["name"] == "") console.log("---------"); 这样做是为了确保cat对象的name属性被初始化,如果name没有被赋值的话则默认它为空值,一般的话在createNew这个函数中会有参数复制给name

var Cat = {
    createNew: function(name){
      var cat = {};
      cat.name=name;
      cat.makeSound = function(){ console.log("喵喵喵"); };
      return cat;
    }
  };
console.log(Cat.createNew().name);//如果此处不传参数则会输出undefined,所以需要加判断语句,将它初始为 ""
,如果name没有被赋值的话则默认它为空值,一般的话在createNew这个函数中会有参数复制给name 你确定是空值, 我举个例子吧:
var Cat2 = {
    createNew: function () {
        var cat = {};
        cat.name = "大毛";
        cat.name2;  //这里是undefined还是null? 
        cat.makeSound = function () { console.log("喵喵喵"); };
        return cat;
    },

    toString: function () {
        return "dxxxxddd";
    }

  };
cat.name2; //这里是undefined还是null?
letMeAlone_ 2017-08-24
  • 打赏
  • 举报
回复
1 、 { } 本身就是一个JSON对象,只不过内容是空的, 相当于初始化 2、 至于深拷贝还是浅拷贝是用于两个对象之间的“复制”这种说法,例子中只是此处只是返回了一个cat对象,不存在拷贝这种说法 3、 if(Cat["name"] == undefined && Cat["name"] == "") console.log("---------"); 这样做是为了确保cat对象的name属性被初始化,如果name没有被赋值的话则默认它为空值,一般的话在createNew这个函数中会有参数复制给name

var Cat = {
    createNew: function(name){
      var cat = {};
      cat.name=name;
      cat.makeSound = function(){ console.log("喵喵喵"); };
      return cat;
    }
  };
console.log(Cat.createNew().name);//如果此处不传参数则会输出undefined,所以需要加判断语句,将它初始为 ""
天际的海浪 2017-08-24
  • 打赏
  • 举报
回复
问题1: 是的,两者完全等价 问题2: 算是深拷贝,其实每次调用Cat.createNew()都会返回一个全新的对象 问题3: 这是判断对象中是不是有name属性,或name属性的值是不是空的。 当不确定对象中是不是有name属性,或name属性的值是不是空的时。就需要这个操作
似梦飞花 2017-08-24
  • 打赏
  • 举报
回复
1 基本一致 但不完全一致 貌似有一丢丢很小的很不明显的区别 看完忘了 2 每次都返回一个对象 互相不影响 3检测有没有name属相
JavaScript极速狂飙:组合拼接字符串的效率JavaScript极速狂飙:CSS样式表的背景渲染效率JavaScript面向对象的支持--(1)JavaScript面向对象的支持--(2)JavaScript面向对象的支持--(3)JavaScript面向对象的支持--(4)JavaScript面向对象的支持--(5)JavaScript面向对象的支持--(6)JavaScript精简学习1:基础知识JavaScript精简学习2:浏览器输出JavaScript精简学习3:图像JavaScript精简学习4:表单事半功倍之Javascript--(1)事半功倍之Javascript--(2)事半功倍之Javascript--(3)事半功倍之Javascript--(4)JavaScript教程--从入门到精通--(1)JavaScript教程--从入门到精通--(2)JavaScript教程--从入门到精通--(3)JavaScript教程--从入门到精通--(5)JavaScript教程--从入门到精通--(6)JavaScript教程--从入门到精通--(7)JavaScript教程--从入门到精通--(8)JavaScript教程--从入门到精通--(9)悟透JavaScript(李站老师)-编程的快乐悟透JavaScript(李站老师)-初看原型悟透JavaScript(李站老师)-对象素描悟透JavaScript(李站老师)-放下对象悟透JavaScript(李站老师)-构造对象悟透JavaScript(李站老师)-原型扩展用javascript操作 asp .net TextBox控件用javascript操作 asp .net Label控件用javascript操作 asp .net TextBox控件 下用javascript操作asp.net label控件 外一篇用javascript改变onclick调用的函数用JavaScript加密保护网站页面用Javascript检测网速的方法用Javascript评估用户输入密码的强度用JavaScript实现仿Windows关机效果用javascript实现进度条用javascript怎样实现图片模糊效果《ExtJS2.0实用简明教程》之Border区域布局《ExtJS2.0实用简明教程》之Ext类库简介《ExtJS2.0实用简明教程》之布局概述《ExtJS2.0实用简明教程》之获得ExtJS《ExtJS2.0实用简明教程》之应用ExtJSjs访问xml之遍历节点树js访问xml之创建xmlDocumentjs访问xml之根节点操作js访问xml之节点操作(1)js访问xml之节点操作(2) js访问xml之节点对象属性和方法js访问xml之删除一个book元素节点js访问xml之添加一个book元素节点【JS】兼容ff的加入收藏和设为首页【补】【sina】绕过sina博客的限制,超级BT执行Javascript【blog】介绍一下给sina博客加背景音乐的办法【Blog】再次解说博客加音乐的办法张孝祥JavaScript教程笔记:HTML基础张孝祥JavaScript教程笔记:HTML基础(二)张孝祥JavaScript教程笔记:HTML基础(三)-URL,图像标签,图像地图JavaScript经典效果集锦(一)JavaScript经典效果集锦(二)JavaScript经典效果集锦(三)Javascript技术技巧大全(一)Javascript技术技巧大全(二)Javascript技术技巧大全(三)Javascript技术技巧大全(四)Javascript技术技巧大全(五)JavaScript[对象.属性]集锦之一

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧