以下代码如何解释?我很难理解var F被声明为函数的事实,然后将F.prototype作为属性添加到该函数中。如何为函数添加属性或者可能是我错误地读取代码。任何有关解释或相关文章或示例的帮助都非常感谢。
String str = Arrays.stream(binary.split("(?<=\\G.{8})"))
.map(s -> Integer.parseInt(s, 2)).map(i -> ""+(char)i)
.collect(Collectors.joining(""));
&#13;
答案 0 :(得分:0)
JavaScript中的函数实际上是一个对象,就像我们为对象分配属性一样,我们可以为函数指定属性,这里没有区别。另外,在调用函数时,如果提供了new
关键字,则函数变为类constructor
,并从函数创建新对象。此外,每个函数对象中都有一个名为prototype
的特殊默认属性,它负责类中的inheritence。
您提供的代码隐藏了创建类的复杂性,即在Class.create方法中,它将原型对象作为参数,然后在内部创建构造函数(从原型对象调用initialize方法) ,然后将原型对象分配给该函数。此外,它检查如果提供的原型对象不包含initialize方法,因为它在构造函数中使用该方法,则会引发错误。最后,在所有这些之后,返回构造函数,我们得到的实际上是一个JavaScript类,因此使用new
关键字with with将创建该类的新对象。
答案 1 :(得分:0)
在这个例子中,默认的NowPlayingViewController
方法(我不相信),require 'pty'
describe "irb" do
it "evaluates an expression" do
PTY.spawn('irb') do |output, input|
output.readpartial 1024 # read past the prompt
input.puts "1 + 1"
expect(output.readline.chomp).to eq("1 + 1")
expect(output.readline.chomp).to eq("=> 2")
end
end
end
方法作为新的...原型传递prototype
”。我以前从未真正看到这件事,但让我们看看一些例子。假设我们称之为类:
object
好的,现在create
是我们对班级的引用,可以这样使用:
var t = Class.create(
{
initialize: function() {
alert('Hello World!');
},
test: function(a) {
alert(a);
},
test2: function(a, b) {
alert(a + ' and ' + b);
}
}
);
会弹出“Hello world!”。有点不正统,但无论它有效。现在t
函数动态调用t.prototype.initialize();
,所以如果你这样做:
F()
它只会弹出“Hello”,或者您可以拥有多个参数并按照您的意愿使用它们:
arguments
当您创建对类t.prototype.test('Hello');
的引用时,它实际上只是调用函数t.prototype.test2('Bacon', 'eggs');
,但除非您在t
中定义F()
方法如果您传递给initialize()
方法,则只会错误地说object
。
修改强>
在阅读完其他答案后,我尝试使用create
关键字,实际上是否会创建该类并调用Uncaught TypeError: Cannot read property 'apply' of undefined
方法:
new
然后,您可以通过调用方法或添加它们来将引用作为主对象处理:
initialize
但是,要小心,好像你没有在电话会议中加入额外的括号,你最终会得到我们之前所拥有的:
var t = new (Class.create({initialize: function() { alert('Hello World!'); }}));