javascript - OOP Javascript 与对象字面量

标签 javascript oop

我发现自己很少会使用OOP,我的意思是这样

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

Person.prototype.dateOfBirth = function(){
//some stuff here
}

var John = new Person('John');
console.log(John.dateOfBirth);

也许我没有构建框架或其他什么,但有时我喜欢使用对象文字来分组我的方法,例如

    var John = {
    name:'John',
    dateOfBirth: function(){
    // return etc
    }
    }

John.dateOfBirth();

也许因为 JS 是客户端语言,所以 OOP 相当多余,你们能分享一下使用 JS 的 OOP 经验吗?我学习了 JS 的基本知识,如原型(prototype)继承和高级对象,但我还没有找到它的任何用例。

最佳答案

查看暴露模块模式,您可以控制暴露的内容和不暴露的内容。我认为它提供了人们在 OOP 中所希望的公共(public)/隐私控制。

This blog post is a good example

var Person = (function() {

  var name = "default";

  function dateOfBirth() {
    privateBirthCalculation(); //can only be invoked inside of the scope
    console.log( 'dateOfBirth' );
  }

  function privateBirthCalculation() {
    console.log( 'my private method' );
  }

  // explicitly return public methods and properties when this object is instantiated
  return {
    dateOfBirth : dateOfBirth,
    name: name
  };

})();

关于javascript - OOP Javascript 与对象字面量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283310/

相关文章:

javascript - 如何使用以对象为目标的 jquery 在特定元素之后附加元素?

javascript - Jest 中的 'describe' 和 'test' 有什么区别?

javascript - 为 Javascript 数组排序注入(inject)对象而不是函数

javascript - 使用node JS连接和断开数据卡

c++ - 如何在 C 中使用 printf 查找对象类型?

python - 像 python 这样的动态语言能给你带来什么?来自 c#/java 背景。给我亮光!

javascript - 有关 Javascript 中常量类的信息

javascript - 我可以在 Javascript 中重复函数参数名称吗?

c - 有没有不是C++的 "C with classes"语言?

javascript - IE9 JavaScript OOP 函数调用不起作用