函数里面如何套函数

fn.get()
function fn(){
//代码写在这里
}

问题,fn 里面如何写,才能访问到 get
运行这个函数,会报错,然后代码只能写在fn里面,也不能把fn当成类,去new它
错误如下

fn.get()
   ^
TypeError: fn.get is not a function
阅读 3.2k
4 个回答
fn();
fn.get();
function fn() {
  arguments.callee.get = () => {
    console.log('get');
  };
}

因为函数必须触发了才能执行内部的代码,所以要在函数里面定义子函数就必须得在调用前触发一次,否则根本无解

function fn(){
    fn.get()
}
fn.get= function(){ console.log(1)}

fn() // 1

我在控制台试了下,能输出1

问题没描述清楚,如果单纯想使 fn.get()可以执行成功的话,可以这样:

function fn(){};
fn.get = function(){};

因为函数本身是一个对象,给对象添加属性属于一般操作,除此之外还可以通过 ProxyObject.defineProperties等方法添加属性。

题目里抛错的原因有二:

  1. fn.get 不是函数;
  2. 解构赋值要求等号右端的表达值的值为一个可遍历的对象(比如数组)。
新手上路,请多包涵
let fun = function() {}
fun.prototype = {
  get: function() {
    return '我是fun中的get'
  }
}
let newFun = new fun()
console.log(newFun.get())
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题