为什么以下Javascript代码不起作用?

时间:2014-09-20 22:58:26

标签: javascript

function user(){
user.name ="Amine";
user.lastName ='Meziane';
document.write(user.name);
};
user();

执行时写入" user"只是而不是名字" Amine"

4 个答案:

答案 0 :(得分:4)

user引用user函数,该函数附带一个初始化为函数名称的现有的,不可分配的name属性。 user.name ="Amine";分配将被忽略。

答案 1 :(得分:1)

正如user2357112指出的那样,您的代码尝试修改函数user的名称属性。此属性不可修改。所以它没有改变。函数user的name属性包含函数user的名称,即"user" :-)。这个名称是你的代码打印出来的。

你可以写:

function user(){
   var user = {};
   user.name = "Amine";
   user.lastName = "Meziane";
   document.write(user.name);
};
user();

此处user.name)不会引用函数user,而是引用局部变量(varuser,该变量已初始化为对象文字({})。

也许你想编写一个构造函数。然后,您将向this添加属性。

function User(name, lastname){
  this.name = name;
  this.lastName = lastname;
  return this; //optional
};

var userAmine = new User("Amine", "Meziane"); // don't forget "new"
document.write(userAmine.name);

也许您可以阅读JavaScript Patterns by Stoyan Stefanov以深入了解JavaScript。

答案 2 :(得分:0)

答案 3 :(得分:-2)

window.onload = function() {
function user(){
var json = '{"name":"Amine","lastName":"Meziane"}',
    obj = JSON.parse(json);
    document.body.innerHTML=obj.name+' '+obj.lastName;
}
user();
};
//or
function user(){
   var user = {};
   user.name ="Amine";
   user.lastName ='Meziane';
   document.write(user.name);
};
user();