无法在javascript中将原型函数作为函数声明编写。为什么?
为什么我们不能像函数声明那样编写原型函数: 函数表达式中只允许使用它:无法在javascript中将原型函数作为函数声明编写。为什么?,javascript,Javascript,为什么我们不能像函数声明那样编写原型函数: 函数表达式中只允许使用它: 函数SinglyLinkedList(){ this.head=null; this.tail=null; } SinglyLinkedList.prototype.add=函数(数据){ 控制台日志(数据); }//按预期工作 函数SinglyLinkedList.prototype.add(数据){ 控制台日志(数据); } //显示错误。,因为语法不是这样设计的。也许它可以这样设计,但事实并非如此。a中的名称(更准确
函数SinglyLinkedList(){
this.head=null;
this.tail=null;
}
SinglyLinkedList.prototype.add=函数(数据){
控制台日志(数据);
}//按预期工作
函数SinglyLinkedList.prototype.add(数据){
控制台日志(数据);
}
//显示错误。
,因为语法不是这样设计的。也许它可以这样设计,但事实并非如此。a中的名称(更准确地说,绑定标识符)必须与的定义匹配,这意味着它不能是类似于SinglyLinkedList.prototype.add
的属性路径
请注意,如果要查找较短的对象,可以使用Object.assign
(新的,但可多填充)和使用方法语法的对象初始值设定项(从ES2015起新增):
或者对于ES2015之前的环境(使用polyfill表示对象.分配
),属性语法而非方法语法:
Object.assign(SinglyLinkedList.prototype, {
add: function(data) {
console.log(data);
},
remove: function(/*...*/) {
// ...
}
// etc.
});
当然,ES2015+有
类
,这也比旧方法更简洁。因为这不是语法的设计方式。也许它可以这样设计,但事实并非如此。a中的名称(更准确地说,绑定标识符)必须与的定义匹配,这意味着它不能是类似于SinglyLinkedList.prototype.add
的属性路径
请注意,如果要查找较短的对象,可以使用Object.assign
(新的,但可多填充)和使用方法语法的对象初始值设定项(从ES2015起新增):
或者对于ES2015之前的环境(使用polyfill表示对象.分配
),属性语法而非方法语法:
Object.assign(SinglyLinkedList.prototype, {
add: function(data) {
console.log(data);
},
remove: function(/*...*/) {
// ...
}
// etc.
});
当然,ES2015+有
类
,这也比旧方法更简洁。第二种方法在JS中语法无效
将命名函数分配给原型的一种可能方法:
function add(data) {
...
}
SinglyLinkedList.prototype.add = add;
第二种方法在JS中语法无效 将命名函数分配给原型的一种可能方法:
function add(data) {
...
}
SinglyLinkedList.prototype.add = add;
在
函数
关键字之后,您可以编写函数名。函数名必须符合有效的命名约定<代码>在函数名中无效,使语法无效
function
关键字不是为在嵌套对象上创建函数而设计的。它唯一的任务是创建一个函数,它不关心你以后把它放在哪里。在函数
关键字之后,你可以写一个函数名。函数名必须符合有效的命名约定<代码>在函数名中无效,使语法无效
function
关键字不是为在嵌套对象上创建函数而设计的。它唯一的任务是创建一个函数,它不关心你以后把它放在哪里。函数表达式中允许什么,你能举个例子吗。?更新了代码SinglyLinkedList.prototype.add=
这不是创建函数,这是->函数(数据){
函数表达式中允许的内容,您能举个例子吗。?更新了代码SingleyLinkedList.prototype.add=
这不是创建函数,这是->函数(数据){