JavaScript中init()用法的作用是什么?

91

JavaScript 中的 init() 函数是什么意思和用途?


1
init只是initiate的简写。通常用于创建一个“new Object()”,就像jQuery中的init()函数返回一个新的jQuery对象一样。 - Lime
3
@LiamWilliam - 初始化 - UpTheCreek
4个回答

142

JavaScript没有内置的init()函数,也就是说,它不是语言的一部分。但是,在许多编程语言中,个别程序员会创建自己的init()函数来进行初始化操作,这并不少见。

一个特定的init()函数可以用于初始化整个网页,在这种情况下,它可能会从 document.ready 或 onload 处理中调用,或者它可能是用来初始化特定类型的对象,或者......你可以命名。

任何给定的init()函数具体执行什么操作取决于编写它的人需要它执行什么操作。有些类型的代码不需要任何初始化。

function init() {
  // initialisation stuff here
}

// elsewhere in code
init();

这还是现状吗?我现在有一些代码,类似于这样:var bEvent = function () {...}(); 然后,在此之后,$(function () { // Launch functions bEvent.init() }) - Jeff
1
@Jeff - 这还是现状吗?在你的例子中,bEvent 必须引用一个具有 init() 方法的对象,你应该能看到它是在函数体内创建的,只是你没有展示出来。 - nnnnnn

38

在JavaScript中,如果你通过构造函数调用来创建对象,像下面这样:

步骤1:创建一个名为Person的函数...

function Person(name){
this.name=name;
}
person.prototype.print=function(){
console.log(this.name);
}

步骤 2:为此函数创建一个实例。

var obj=new Person('venkat')

//上面这行代码将实例化这个函数(Person),并返回一个名为Person {name:'venkat'}的全新对象。

如果您不想同时实例化这个函数并调用它,我们也可以像下面这样做...

var Person = {
  init: function(name){
    this.name=name;
  },
  print: function(){
    console.log(this.name);
  }
};
var obj=Object.create(Person);
obj.init('venkat');
obj.print();

在上面的方法中,init 将帮助实例化对象属性。基本上,init 就像是对您的类进行构造函数调用。


2

NB. 构造函数名称应以大写字母开头,以区别于普通函数,例如 MyClass 而不是 myClass

您可以从构造函数中调用 init

var myObj = new MyClass(2, true);

function MyClass(v1, v2) 
{
    // ...

    // pub methods
    this.init = function() {
        // do some stuff        
    };

    // ...

    this.init(); // <------------ added this
}

或者更简单地,您可以将init函数的主体复制到构造函数的末尾。如果它只被调用一次,根本不需要实际的init函数。


1
请查看https://dev59.com/aXA75IYBdhLWcg3wAD_x - Kiran Raj R

0

这更像是无法访问的代码

例如,如果变量x或函数x()在调用它的行下面声明,则会生成此错误:

 setPlayerOne();

let imageGenerator = (value) =>{
allImages = {
    1: 'images/dice1.png',
    2: 'images/dice2.png',
    3: 'images/dice3.png',
    4: 'images/dice4.png',
    5: 'images/dice5.png',
    6: 'images/dice6.png',
}
  return allImages[Number(value)];
}

findRandom = () =>{
    let randomNumber = Math.floor(Math.random() * 6) +1
    return randomNumber;
}

let setPlayerOne = () =>{
   let img1 = document.querySelector('.img1').attributes.src;
   img1.value = imageGenerator(findRandom())
}

let setPlayerTwo = () =>{
    let img2 = document.querySelector('.img2').attributes.src;
    img2.value = imageGenerator(findRandom())
}

  
setPlayerTwo();

setPlayerOne() 方法会生成这个,但是 setPlayerTwo() 不会生成; 这是因为 JS 在初始化之前调用了 setPlayerOne()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接