Convert object to JSON omitting certain (private) properties

I've been using dean edwards base.js ( to organise my program into objects ( base.js is amazing btw, if you havent used it before !).Anyway, my question is generic and you don't have to know base.js to know my answer.

I have a property in one of my objects called ref which is a reference to a DOM element, and this object is meant to be saved as JSON using JSON.stringify, but as you can imagine since DOM elements are circular structure, I won't be able to convert the object into JSON.

Now to get around this problem I have a method called html() which is meant to return the ref property, but I need to have ref as a private property which is only accessible from within the object, and hence won't be sent to stringify.

What's the best way to do that?



You probably know that you cannot have private properties in JavaScript.

Interestingly, if you pass an object to JSON.stringify which has a method toJSON, JSON.stringify will automatically call that method to get a JSONable representation of that object. So all you have to do is implement this method.

For example you can create a shallow copy of the object which only contains the properties you want to copy:

MyConstructor.prototype.toJSON = function() {
    var copy = {},
        exclude = {ref: 1};
    for (var prop in this) {
        if (!exclude[prop]) {
            copy[prop] = this[prop];
    return copy;


Another way would be to use a custom replacer function, but it might be more difficult to control which ref to exclude and which one to keep (if different objects have ref properties):

JSON.stringify(someInstance, function(key, value) {
     if(key !== 'ref') {
         return value;



here is sample to to set variable visibility

function Obj(){
       this.ref = 'public property'; // this property is public from within the object

       var ref = 'private proerty'; // this property is private.

       var self = this;

        this.showRef = function(){

var obj = new Obj();


Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us Javascript

©2020 All rights reserved.