如何使构造函数原型可枚举?

时间:2019-03-07 10:23:31

标签: javascript

如何使原型getTaggedTweet枚举,因此无法从外部访问此原型?我可以使用对象的defineProperty方法吗?

tabBarController?.navigationController?.pushViewController(viewController, animated: true)

1 个答案:

答案 0 :(得分:0)

使一个属性可枚举或不可枚举不会影响它是否可以从外部访问。如果它是一个属性,则可以使用Object.getOwnPropertyNames 对其进行访问,而const obj = {}; Object.defineProperty(obj, 'amIPrivate', { value: 'no', enumerable: false }); Object.getOwnPropertyNames(obj).forEach((prop) => { console.log(obj[prop]); });也会遍历不可枚举的属性。

const Tweet_api = (() => {
  function Tweet_api(tweetID) {}
  Tweet_api.prototype.getTweetByHandler = async function() {
    const data = await getTaggedTweet.call(null, 'handler');
    return data;
  };
  Tweet_api.prototype.getTweetByHashtag = async function() {
    const data = await getTaggedTweet.call(null, 'hashtag');
    return data;
  };
  const getTaggedTweet = method => method === 'handler' ? '@' : '#';
  return Tweet_api;
})();

相反,您可以确保外部无法使用 closure 访问您的方法-制作一个IIFE,该类定义该类和其中的(私有,独立)函数,然后返回该类:< / p>

await

还请注意,无需using System; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnApp1_Click(object sender, EventArgs e) { var f = new WindowsFormsApplication2.Form1(); f.ShowDialog(); } private void btnApp2_Click(object sender, EventArgs e) { var f = new WindowsFormsApplication3.Form1(); f.ShowDialog(); } } } 不需要的东西。