在react native用到的javascript 的一些关键知识(整理中)

发现了一个讲解javascript的好网站,分享一下,讲的非常棒!

注意,这些文章都可以选择中文进行阅读!

下面这个连接是关于prototype的:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

下面这个连接是关于Function的:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions

这个是Object的:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object

再贴一个博客园园友的链接,也是非常值得详读的:

http://www.cnblogs.com/dolphinX/p/5565753.html

http://www.cnblogs.com/dolphinX/p/4385862.html

下面说说我的理解,

首先,使用 

function Person(name){
    this.name = name;
    this.speak = function(){
      console.log('hello!');
    }
}

function Person(name){
    this.name = name;
}

Person.prototype.speak = function(){
  console.log('hello!');
}

有什么区别呢?

使用第二种方法,以后用new Person创建出来的对象的__proto__属性都会指向  同一个 Person的prototype对象,因此,在内存中只有一份speak的函数实现; 而使用 第一种方法,每个new出来的对象,都有自己独立的speak函数对象,也就是说在内存中,存在许多份相同的speak函数实现。

由此,我们可以得出这样的结论:普通属性(每个对象都可能不同),应该放在函数声明中,使得每个对象的普通属性都有独立的内存空间,不相互影响;函数属性 (每个对象应该都一样),应该放到prototype里,防止过多的内存占用,也可以达到修改一次,所有对象的对应函数都被修改的效果。


下面抄一段别人的话,看看module.exports 和 require的说明。

我们只需知道三点即可知道 exports 和 module.exports 的区别了:

  1. exports 是指向的 module.exports 的引用
  2. module.exports 初始值为一个空对象 {},所以 exports 初始值也是 {}(注意,这里也是个对象,不是空指针)
  3. require() 返回的是 module.exports 而不是 exports

require() is not part of your standard JavaScript. In context to your question and tags, require() is built into Node.js to load modules。

原文地址:https://www.cnblogs.com/breezemist/p/5729844.html