Javascript 如何将函数转换为原型? 问题

Javascript 如何将函数转换为原型? 问题,javascript,jquery,Javascript,Jquery,我创建了一个函数,它将数组分解为数组中的句子 但是,目前,我一次只能做一个array。将动态创建对象名称 是否有任何方法可以将创建句子函数转换为原型 这样,创建句子功能就是动态的 句子={ 加载:[], 全部:[ “如果您正在访问此页面,您很可能会出现在此处,因为您正在搜索随机句子。有时,随机单词是不够的,这就是随机句子生成器发挥作用的地方。通过输入所需的数字,您可以列出您想要或需要的任意多个随机句子。生成随机句子可能会有所帮助以多种不同的方式。” ] } 图形设计师={ 标志设计师:[ “对

我创建了一个
函数
,它将
数组
分解为数组中的句子

但是,目前,我一次只能做一个
array
。将动态创建
对象
名称

是否有任何方法可以将
创建句子
函数转换为
原型

这样,
创建句子
功能就是动态的

句子={
加载:[],
全部:[
“如果您正在访问此页面,您很可能会出现在此处,因为您正在搜索随机句子。有时,随机单词是不够的,这就是随机句子生成器发挥作用的地方。通过输入所需的数字,您可以列出您想要或需要的任意多个随机句子。生成随机句子可能会有所帮助以多种不同的方式。”
]
}
图形设计师={
标志设计师:[
“对于那些有作家障碍的作家来说,这可能是一个很好的方法,可以迈出一步打破这些障碍。通过让作家远离造成障碍的主题,一句随意的话可以让他们从不同的角度和角度看他们正在做的项目。有时,所需要的只是第一句话。”“我会停下来帮助打破障碍。”
],
大师:[
“它还可以成功地作为一种日常练习,让作家开始写作。向他们展示一个随机的句子,并每天用它完成一段文字,这是开始任何写作课程的一种极好的方式。”
],
您好:[
“随机的句子也能激发其他类型项目的创造力。如果你正试图提出一个新概念、新想法或新产品,随机的句子可能会帮助你找到你可能没有考虑过的独特品质。尝试将句子融入到你的项目中可以帮助你从不同的角度看待它这比你平时独自一人要难得多。”
]
}
函数create_语句(){
a=/([.?!])\s+([a-zA-Z]|[$\-])/g
b=“$1”+“新闻事件”+“$2”
c=“newSentence newSentence”
modifiedText=句子。全部[0]。替换(a,b)
句子.all=modifiedText.split(c)
}
创造句子
document.write(“+JSON.stringify(句子,null,2)+”);
sentences.all
sentences.all.forEach( s => s.create_sentences );
document.write(“+JSON.stringify(graphic_designer,null,2)+”)
sentences.all
sentences.all.forEach( s => s.create_sentences );

原因是在创建了要处理的字符串后,您正在修改
字符串
原型。修改原型只会影响修改后创建的对象(因为对象创建基本上涉及复制原型)。所以,先做你的
String.prototype.创建句子,它应该可以正常工作。

这里实际上有两个问题。最基本的是

this = modifiedText.split(c);
是一个数组,而不是字符串,因此不能对其调用
create\u-con句()
函数。你可以试试

return modifiedText.split(c);
…或者您可以将
create_句子()
转换为数组原型上的函数

另一个问题是,
create_-conversations()
函数试图在适当的位置更改字符串对象,这实际上是不可能的,因为javascript字符串是不可变的。所以当你这么做的时候

var newSentence = oldSentence.create_sentences();
…这没有任何意义,因为
无法重新分配此
。您试图做的是更改字符串对象,但您所能做的就是创建一个修改后的副本。所以我会这么做

并称之为


句子
是对象,需要在对象原型中添加函数

例如:

句子={
加载:[],
全部:[
“如果您正在访问此页面,您很可能会出现在此处,因为您正在搜索随机句子。有时,随机单词是不够的,这就是随机句子生成器发挥作用的地方。通过输入所需的数字,您可以列出您想要或需要的任意多个随机句子。生成随机句子可能会有所帮助以多种不同的方式。”
]
}
图形设计师={
标志设计师:[
“对于那些有作家障碍的作家来说,这可能是一个很好的方法,可以迈出一步打破这些障碍。通过让作家远离造成障碍的主题,一句随意的话可以让他们从不同的角度和角度看他们正在做的项目。有时,所需要的只是第一句话。”“我会停下来帮助打破障碍。”
],
大师:[
“它还可以成功地作为一种日常练习,让作家开始写作。向他们展示一个随机的句子,并每天用它完成一段文字,这是开始任何写作课程的一种极好的方式。”
],
您好:[
“随机的句子也能激发其他类型项目的创造力。如果你正试图提出一个新概念、新想法或新产品,随机的句子可能会帮助你找到你可能没有考虑过的独特品质。尝试将句子融入到你的项目中可以帮助你从不同的角度看待它这比你平时独自一人要难得多。”
]
}
Object.prototype.createSequences=函数createSequences(){
变量a=/([.?!])\s+([a-zA-Z]|[$\-])/g;
变量b=“$1”+“新闻事件”+“$2”;
var c=“newSentence newSentence”;
modifiedText=this.all[0]。替换(a,b);
返回modifiedText.split(c)
}

document.write(“+JSON.stringify(句子.创建句子(),null,2)+”)啊,我看到了另一个问题。我将添加另一个答案。在
newSentence=句子中不断失败。全部。创建句子()我返回了字符串,它也可以更新,这不是问题。为什么它只在
JSON.stringify
中工作?我做文档只是为了展示它的外观。@AllenMarshall:cool,我创建了一个小提琴,其中字符串是使用
br
tag连接的,而不是使用JSON.stringify…:)链接到小提琴:
sentences.all
sentences.all.forEach( s => s.create_sentences );